資料結構 排序演算法

2021-09-24 09:29:25 字數 1413 閱讀 9089

選擇排序

插入排序

快速排序(遞迴實現)

qsort(實現快排非遞迴)

#include #include #include #define n 500000  

#define swap(a,b) //巨集裡面實現交換,而且效率比較高

void arrprint(int *arr);//列印

void arrselect(int *arr);//選擇排序,一輪比較完後才交換

void arrinsert(int *arr);//插入排序,

void arrquick(int *, int, int);//快排

void arrshell(int *arr);//希爾排序

int partition(int *arr, int left, int right);//分割函式

int compare(const void* left, const void* right)

int main()

// arrprint(arr);

start = time(null);

//arrselect(arr);//選擇排序 從大到小排序

//arrinsert(arr);//插入排序 從小到大

//arrshell(arr);//希爾排序 從小到大

//arrquick(arr,0,n);//快排 遞迴??????????????

qsort(arr, n, sizeof(int), compare);//非遞迴的快排

end = time(null);

// arrprint(arr);

printf("arrquick:use time=%d\n", end - start); }

void arrprint(int *arr)

printf("\n");

}//選擇排序

void arrselect(int *arr)

swap(arr[maxpos], arr[i - 1]);//巨集

} }}//插入排序

void arrinsert(int *arr)

else

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

//希爾排序 不怎麼重要

void arrshell(int *arr)

arr[j + gap] = insertvalue;

} }}int partition(int *arr, int left, int right)

} swap(arr[k], arr[right]);

return k;

}//快排

void arrquick(int *arr, int left, int right)

}

資料結構 排序演算法

include include define maxitem 100 typedef char keytype 5 typedef int elemtype typedef struct rec elemnode maxitem 氣泡排序演算法 void bubblesort elemnode r,...

資料結構 排序演算法

排序演算法分為內部排序和外部排序兩大類。內部排序 在計算機記憶體中完成的排序演算法 外部排序 不能再記憶體中文完成,必須在磁碟或者磁帶上完成的排序演算法 內部排序是研究的重點問題,通常我們講的八大排序演算法也主要是講的內部排序演算法。排序演算法的穩定性和時間空間複雜度 本文重點介紹以下幾種排序演算法...

資料結構 排序演算法

直接插入排序是指將r i r n 插入到已經有序的r 1 r i 1 序列中。r 0 是乙個哨兵,起到作為邊界條件並作為暫存單元的作用。實際上,一切為簡化邊界條件而引入的附加節點 元素 均可稱為哨兵。例如單鏈表中的頭結點。對於有n個記錄的集合,要進行n 1趟排序。其最優時間複雜度是o n 平均時間複...