這兩天一直總結排序問題,然後話不多啦,直接上**
最主要的是要學會快速排序和氣泡排序,其它排序要熟練即可。
#include
#include
#define datatype int
void insertsort(datatype a, datatype len);
void biinsertsort(datatype a, datatype len);
void bubblesort1(datatype a, datatype len);//氣泡排序(從右至左)
void bubblesort2(datatype a, datatype len);//氣泡排序(從左至右)
void fastsort(datatype a, int left, int right);//快速排序
void selectsort(datatype a, int len);//選擇排序
datatype main(void)
printf("排序後的結果是:\n");
//biinsertsort(a, i - 1);
selectsort(a, i - 1);
datatype k;
for (k = 1; k <= i - 1; k++)
printf("%d ", a[k]);
return 0;
}//折半查詢排序減少了比較次數為o(nlog2n),但是時間複雜度仍為o(n2),穩定排序(插入排序)
void biinsertsort(datatype a, datatype len)
for (j = i - 1; j >= high + 1; --j)
a[high + 1] = a[0];}}
//直接插入排序比較次數為o(n2),時間複雜度為o(n2),穩定排序(插入排序)
void insertsort(datatype a, datatype len)
}//從右至左的冒泡(外部迴圈從左至右,內部迴圈從右至左)複雜度(o(n2)),穩定( 交換排序)
void bubblesort1(datatype a, datatype len)
}if (flag == false)
break;}}
//從左至右的冒泡(外部迴圈從右至左,內部迴圈從左至右)( 交換排序)
void bubblesort2(datatype a, datatype len)
}if (flag == false)
break;}}
int partition(datatype a, int left, int right)
a[left] = pivot;
return left;
}//快速排序,平均時間複雜度o(nlog2n),最好為o(log2n),最壞為o(n2).是不穩定排序( 交換排序)
void fastsort(datatype a, int left, int right)
}//簡單選擇排序,不穩定,o(n2)(選擇排序)
void selectsort(datatype a, int len)
if (min != i)}}
資料結構 排序 各種排序演算法全分析
資料結構 排序 各種排序演算法全分析 排序簡介 排序是資料處理中經常使用的一種重要運算,在計算機及其應用系統中,花費在排序上的時間在系統執行時間中占有很大比重 並且排序本身對推動演算法分析的發展也起很大作用。目前已有上百種排序方法,但尚未有乙個最理想的盡如人意的方法,本章介紹常用的如下排序方法,並對...
資料結構排序問題
資料結構排序總結 基本原理 冒泡法 小的上浮,大的下沉 即相鄰元素比較,若前面的元素比後面的大,則交換位置。氣泡排序的優化 可以設定乙個標誌位,如果某一次迴圈中發現位置都沒有變化,顯然陣列已排好序,直接退出。include 交換sp1和sp2的位置的函式 void swap int sp1,int ...
資料結構 各種排序演算法比較
一,各種排序演算法比較 各種排序演算法比較 二,相關概念 1 穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就說這種排序方法是穩定的。反之,就是非穩定的。比如 一組數排序前是a1,a2,a3,a4,a5,其中a2 a4,經過某種排序後為a1,...