常見排序演算法及其C語言實現(二)

2021-08-06 01:35:34 字數 638 閱讀 9745

堆的基本操作及堆排序

void siftup(int *h, int i); //關於堆,所有的位置計算都從1開始。包括n代表個數。

void siftdown(int *h, int n, int i); //因此在陣列操作的時候都要減一,其它位置均表示個數

void makeheap(int *h, int n);

void heapsort(int *a, int n);

void heapdelete(int *h, int n, int i);//預設n大於i,基本思想是和h[n]互換

void heapinsert(int *h, int n);//基本思想也是和h[n]互換

void heapdelete(int *h, int n, int i) else

}void heapsort(int *a, int n)

}void makeheap(int *h, int n)

}void siftdown(int *h, int n, int i)

if (h[i / 2 - 1] < h[i-1])

}}void siftup(int *h, int i)

else

}}

排序演算法思想及其C語言實現

查詢最小數字並進行交換 以對8個數字進行排序為例 對下面八個數字進行從小到大的排序,我們採用的方案是先從八個數字中找到最小的數字,在這裡就是將1和最左邊的7交換位置,這之後1的位置固定下來。接下來我們在剩下的數字裡尋找最小數,將最小的4和左邊第二個數字對換位置,於是4和13也交換了位置。我們發現什麼...

C語言實現幾種常見排序演算法

worker.c created on 2010 7 1 author panfei include void swap int x,int y 插入排序 公升序 void insertsort int arr,int size arr j 1 to insert 選擇排序 降序 void sele...

C語言實現幾種常見排序演算法

氣泡排序最好的時間複雜度為 o n 氣泡排序總的平均時間複雜度為 o n 2 氣泡排序演算法的原理如下 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除...