實驗目的:
1、希爾排序
2、快速排序
3、堆排序
實驗**如下:
#include
#include
#include
using
namespace std;
#define maxsize 20
#define len(a) sizeof(a)/sizeof(a[0])
typedef
int infotype;
typedef
int keytype;
typedef
struct
redtype;
typedef
struct
sqlist;
//希爾排序
void
shellinsert
(sqlist &l,
int dk)
}void
shellsort
(sqlist &l,
int dt,
int t)
//快速排序
intpartition
(sqlist &l,
int low,
int high)
l.r[low]
=l.r[0]
;return low;
/*low為軸值記錄的最終位置*/
}void
qsort
(sqlist &l,
int low,
int high)
}void
quicksort
(sqlist &l)
//堆排序
void
heapadjust
(sqlist &l,
int s,
int m)
l.r[s]
= rc;
}void
heapsort
(sqlist &l)
}void
creatsq
(sqlist &l)
void
print
(sqlist l)
intmain()
;creatsq
(l);
printf
("排序前:\n");
print
(l);
shellsort
(l,dt,3)
;printf
("排序後:\n");
print
(l);
printf
("******快速排序******\n");
creatsq
(l);
printf
("排序前:\n");
print
(l);
quicksort
(l);
printf
("排序後:\n");
print
(l);
printf
("*******堆排序******\n");
creatsq
(l);
printf
("排序前:\n");
print
(l);
heapsort
(l);
printf
("排序後:\n");
print
(l);
return0;
}
執行結果如下: 排序演算法的實現
1 直接插入排序 把後面未排序部分的首個數插入到前面已排序部分的正確位置上去,直到全部排好順序。直接插入排序是穩定的,演算法時間複雜度o n 2 2 shell排序 將要排序的一組數按某個增量g分成若干組,每組中記錄的下標相差g。對每組中全部元素進行直接插入排序,然後縮小增量g,在每組中再進行排序。...
排序演算法的實現
1.插入排序 演算法導論p3 insertsort.cpp created on 2012 7 9 author sangerhoo include using namespace std void insertsort int array,int n array i 1 key void arra...
排序演算法 選擇排序演算法實現
1 時間複雜度 o n 2 2 選擇排序主要操作是交換和比較 交換次數在0 n 1 總比較次數 n n 1 n 2 n 3 1 n n 1 2 因為交換需要的cpu時間 比較需要的cpu時間 當n比較少時,選擇比冒泡快,減少了不必要的交換,每次交換僅僅是最大值或者最小值與序列起始位置進行狡猾。3 演...