了解各種排序演算法的時間和空間複雜度,程式設計或呼叫庫函式實現各種排序(至少5種)。將各種排序方法用各種資料進行測試。資料報括大規模資料(500000-1000000),小規模資料,最好資料,最壞資料,給定資料,隨機資料。對基於比較的排序跟蹤比較和交換次數。根據測試結果,對排序演算法進行分析時空複雜度以及穩定性分析。
實現了插入排序(直接插入排序、希爾排序)、交換排序(氣泡排序、快速排序)、選擇排序(直接選擇排序)、歸併排序共6種排序演算法。
在該設計中最壞資料為50個元素的遞減序列,最好資料為50個元素的遞增序列,小規模資料由隨機生成10個元素,大規模資料由隨機生成500000個元素,隨機資料由隨機生成50元素。
1.直接插入排序各類資料測試結果如下:
資料比較次數
交換次數
最壞資料(50)
1274
1274
最好資料(50)
4949
小規模資料(10)
3535
大規模資料(500000)
62544953357
62544953357
隨機資料(50)
706706
2. 希爾排序各類資料測試結果如下:
資料比較次數
交換次數
最壞資料
308308
最好資料
203203
小規模資料(10)
3535
大規模資料(500000)
28248913
28248913
隨機資料
346346
3. 氣泡排序各類資料測試結果如下:
資料比較次數
交換次數
最壞資料
1225
1225
最好資料
1225
0小規模資料(10)
4521
大規模資料(500000)
124999750000
187538241828
隨機資料
1225
644
4. 快速排序
資料比較次數
交換次數
最壞資料:
1225
147最好資料
1225
147小規模資料(10)
2124
大規模資料(500000)
13321628
4509311
隨機資料:
256168
5. 直接選擇排序
資料比較次數
交換次數
最壞資料
1225
75最好資料
1225
0小規模資料(10)
4521
大規模資料(500000)
124999750000
1499910
隨機資料:
1225
135
6. 二路歸併排序
資料比較次數
交換次數
最壞資料
133592
最好資料
161592
小規模資料(10)
2176
大規模資料(500000)
8858700
18980608
隨機資料
234592
void insertsort(rectype r,int n)//直接插入排序
r[j+1]=tmp;//插入
}}void shellsort(rectype r,int n)//希爾排序
}void bubblesort(rectype r,int n)//氣泡排序}}
}void quicksort(rectype r,int s,int t)
r[i]=r[j];//交換
m++;
while(i//從左向右掃瞄,找大於tmp.key的r[i]
r[j]=r[i];//交換
}r[i]=tmp;
quicksort(r,s,i-1);//對左區間遞迴排序
quicksort(r,i+1,t);//對右區間遞迴排序
}}void selectsort(rectype r,int n)//直接選擇排序
}}void merge(rectype r,int low,int mid,int high)//兩有序表直接歸併為乙個有序表
else
}while(i<=mid)//第一段餘下部分放入r1
while(j<=high)//第二段餘下部分放入r1
for(k=0,i=low;i<=high;k++,i++)//r1複製到r
free(r1);
}void mergepass(rectype r,int
length,int n)//對整表進行一趟排序
void mergesort(rectype r,int n)//自底向上的二路歸併排序演算法
各種排序演算法分析總結
排序演算法 1 分類 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 直接選擇排序 堆排序 4 歸併排序 5 分配排序 箱排序 基數排序 所需輔助空間最多 歸併排序 所需輔助空間最少 堆排序 平均速度最快 快速排序 不穩定 快速排序,希爾排序,堆排序。1 選擇排...
各種排序演算法全分析
排序簡介 排序是資料處理中經常使用的一種重要運算,在計算機及其應用系統中,花費在排序上的時間在系統執行時間中占有很大比重 並且排序本身對推動演算法分析的發展也起很大作用。目前已有上百種排序方法,但尚未有乙個最理想的盡如人意的方法,本章介紹常用的如下排序方法,並對它們進行分析和比較。1 插入排序 直接...
各種排序演算法分析與比較
1.直接插入排序 每一趟將乙個待排序的元素作為關鍵字,按照其關鍵字的大小插入到已經排好的部分序列的適當位置上。平均時間複雜度為o n2 空間複雜度為o 1 void insertsort int r,int n r j 1 temp 2.氣泡排序 平均時間複雜度為o n2 空間複雜度為o 1 voi...