排序方法的演算法實現

2021-10-01 18:48:12 字數 1817 閱讀 2151

實驗目的:

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 演...