日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++插入排序算法

發布時間:2023/12/4 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++插入排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插入排序的時間復雜度為o(n*n)。

邏輯分析:

將數組第一個元素認為是有序數組,然后比較第二個元素的關鍵字與第一個元素關鍵字的大小,有序排列。

將數組后面一個元素的關鍵字插入到前面的有序數組中,一直重復至排序完成。

代碼分析:? ??

數組a[]={2,1,4,5,3,8,7,9,0,6},length=10。

i=1,j=0,a[j+1]=1<a[j]?=2,故交換a[j],a[j+1],數組?a[]={1,2,4,5,3,8,7,9,0,6}。

i=1,j=-1,不做任何操作。

i=2,j=1,a[j+1]=4>a[j]?=2,不做任何操作,數組不改變。

i=3,j=2,a[j+1]=5>a[j]?=4,不做任何操作,數組不改變。

i=4,j=3,a[j+1]=3<a[j]?=5,故交換a[j],a[j+1],數組?a[]={1,2,4,3,5,8,7,9,0,6}。

i=4,j=2,a[j+1]=3<a[j]?=4,故交換a[j],a[j+1],數組?a[]={1,2,3,4,5,8,7,9,0,6}。

i=4,j=1,a[j+1]=3>a[j]?=2,不做任何操作,數組不改變。

i=5,j=4,a[j+1]=8>a[j]?=5,不做任何操作,數組不改變。

i=6,j=5,a[j+1]=7<a[j]?=7,故交換a[j],a[j+1],數組?a[]={1,2,3,4,5,7,8,9,0,6}。

i=6,j=4,a[j+1]=7>a[j]?=5,不做任何操作,數組不改變。

i=7,j=6,a[j+1]=9>a[j]?=8,不做任何操作,數組不改變。

i=8,j=7,a[j+1]=0<a[j]?=9,故交換a[j],a[j+1],數組?a[]={1,2,3,4,5,7,8,0,9,6}。

j--,直到數組?a[]={0,1,2,3,4,5,7,8,9,6}。

i=9,j=8,a[j+1]=6<a[j]?=9,故交換a[j],a[j+1],數組?a[]={0,1,2,3,4,5,7,8,6,9}。

j--,直到數組?a[]={0,1,2,3,4,5,6,7,8,9}。

#include<iostream> #include<cstdlib>using namespace std;//交換數組元素位置位置 void swap(int &a, int &b) {int temp = a;a = b;b = temp; }/* 插入排序。注意,若后面一個元素比其前面一個元素小,則將這兩個元素交換位置,然后再來比較這個插入元素與前面一個元素的大小,若小,則還需要交換這兩個元素位置,一直到這個插入元素在正確的位置為止 */ void insertSort(int a[], int length) {for (int i = 1; i < length; i++){for (int j = i - 1; j >= 0 && a[j + 1] < a[j]; j--){swap(a[j], a[j + 1]);}}}int main() {int a[] = { 2,1,4,5,3,8,7,9,0,6 };insertSort(a, 10);for (int i = 0; i < 10; i++){cout << a[i] << "";}cout << endl;system("pause");return 0;}

?

?

總結

以上是生活随笔為你收集整理的C++插入排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。