直接插入 希爾排序 堆排序 快速排序

2021-10-05 04:31:21 字數 1229 閱讀 5449

#include

#include

#include

#define len 13

//直接插入排序

void insertsort(int *arr,int len)

arr[j + 1] = arr[j];

}arr[j+1] = tmp;}}

//希爾排序 對直接插入的優化 時間複雜度o(n^1.3) – o(n^1.5) 空間 o(1) 穩定性:不穩定

void shell(int *arr,int len,int d)

arr[j+d] = arr[j];

}arr[j + d] = tmp;}}

void shellsort(int *arr,int len)

;for(int i = 0;i//堆排序

void oneadjust(int *arr,int len,int root)

//if執行完後就可以知道j是最大孩子的下標

if(tmp > arr[j])

arr[i] = arr[j];

i = j;

j = 2 * i + 1;

}arr[i] =tmp;

}void creatheap(int *arr,int len)

}//o(nlogn) 空間:o(1) 穩定性:不穩定

void heapsort(int *arr,int len)

}//快速排序 時間複雜度: o(nlogn) 空間複雜度:o(logn)

void quick(int *arr,int start,int len)

//右半部分 mod+1 end

if(end - mod >1)

}int onequick(int *arr,int start,int end)

arr[start] = arr[end];

while(start < end && arr[start] <= tmp)

arr[end] = arr[start];

}arr[start] = tmp;

return start;

}int main()

printf(」\n");

shellsort(arr,len);

/for(int i = 0; i < len; ++i)

printf(」\n");

insertsort(arr,len);/

/}*/

這裡是引用

直接插入排序 希爾排序 快速排序 堆排序演算法比較

進行典型內部排序演算法的比較,隨機產生整數樣本,進行四種排序,並比較各種排序演算法的執行時間。include stdio.h include stdlib.h include conio.h include time.h define maxsize 20 typedef structredtype...

直接插入排序 希爾排序

一.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。最優複雜度 當輸入陣列就是排好序的時候,複雜度為o n 而快速排序在這種情況下會產生o n 2 的複雜度。最差複雜度 當輸入陣列為倒序時,複雜度...

直接插入排序 希爾排序

1.直接插入排序 時間複雜度o n2 工作原理 通過構建有序序列,對於未排序資料,在已排序的序列中,從後向前掃瞄,找到相應的位置並插入。插入排序在實現上,在從後向前掃瞄的過程中,需要反覆把已排序元素逐步向後移動,為最新元素提供插入空間。直接插入排序 public static void insert...