快速排序,氣泡排序,插入排序,希爾排序

2021-06-10 05:24:22 字數 1810 閱讀 7421

快速排序

氣泡排序

插入排序

插入排序是最簡單最直觀的排序演算法,它的依據是:遍歷到第n個元素的時候前面的n-1個元素已經是排序好的了,那麼就查詢前面的n-1個元素把這第n個元素放在合適的位置,如此下去直到遍歷完序列的元素為止.

演算法的複雜度也是簡單的,排序第乙個需要1的複雜度,排序第二個需要2的複雜度,因此整個的複雜度就是

1 + 2 + 3 + ... + n = o(n ^ 2)的複雜度.

直接插入排序(straight insertion sort)的作法是:

每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。

第一趟比較前兩個數,然後把第二個數按大小插入到有序表中; 第二趟把第三個資料與前兩個數從前向後掃瞄,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃瞄以後就完成了整個排序過程。

直接插入排序屬於穩定的排序,時間複雜性為o(n^2),空間複雜度為o(1)。

#includevoid insert_sort(int *a,int n)

a[j] = temp;//a[j]已經是空的了,即要插入的位置 }}

int main()

; int count = sizeof(arr)/sizeof(int);

insert_sort(arr,count);

for(int i = 0;i < count; i++)

return 0;

}

希爾排序

#includeusing namespace std;

void shell(int *a,int n)

a[j+d]=x;

} d /= 2;}}

int main()

; int count = sizeof(arr)/sizeof(int);

shell(arr,count);

for (int i=0; i < count;i++)

return 0;

}

氣泡排序 選擇排序 插入排序 希爾排序 快速排序

這張圖映象了,當然也可以看明白,再賦另一張圖 快速排序 定乙個基準點,一般以左側為基準點,兩個指標 i,j右側 先j 左,遇到小於基準點停下,再i 右,遇到大於基準點,交換兩個元素。再次 移動j和i相同操作,直到j i,這時交換這個點和基準點,這個時候,陣列排序 左側為 小於基準點,右側大於基準點。...

插入排序 選擇排序 氣泡排序 希爾排序

引入概念 排序穩定性 輸入資料的順序,排序後不能改變。例如,1,2,3,3,5.排序完若第乙個3和第二個3互換,則為不穩定。1.插入排序 穩定 解釋 像打撲克時整理牌時一樣,遇到小牌就插在前面比他大的前面,而後面的牌順次後移 直到處理完最後一張牌。優點 比氣泡排序只能處理相鄰資料更為靈活,適用於資料...

氣泡排序,插入排序,選擇排序,希爾排序

在另外的文章中介紹了快速,堆,歸併排序,這三個排序都是高效的排序,下面介紹一些時間複雜度為o n 2 的排序。氣泡排序,顧名思義,就是將小的元素往上冒,大的元素往下沉,實際在變成的時候用的是大的元素往下沉的方法。每一趟過後,都有乙個最大的元素被沉到底。下一次排序時陣列規模減少了1。主要應用到了相鄰兩...