七大排序演算法

2021-09-19 12:17:22 字數 1625 閱讀 6533

從後向前,將待插入之儲存起來,與前面的數相比較,若滿足條件,依次向後搬移,最終將key插入滿足的位置

void insertsort(int arr, int size)

arr[end + 1] = key;

}}

將待排序序列依據步長(增量)劃分為若干組,對每組分別進行插入排序。

void shellsort(int* array, int size)

array[end + gap] = key;

} }}

void swap(int * left, int * right)
找出最大(小)元素與最後一位交換,指向陣列下表的變數減減,故內層迴圈條件為jarray[maxpos])

} if (maxpos!=size-i-1)

swap(array + maxpos, array + size -i- 1);

}}

//優化**,雙向選擇

void selectsort_op(int * array, int size)

if (maxpos != size - 1)

swap(array + maxpos, array + end);

//如果條件滿足,end與maxpos交換了

if (minpos == end)

minpos = maxpos;

if (minpos != 0)

swap(array + minpos, array + begin);

begin++;

end--;

}}

void heapadjust(int * array, int size, int parent)

else

return; }}

void heapsort(int* array, int size)

//排序 堆刪除

int end = size - 1;

while (end)

}

void bubblesort(int * array, int size)

}}

//這只是一種分割方法

int partion(int * array, int left, int right)

//中間位置和基準值交換

swap(array + begin, & key);

//返回基準值所在位置

return begin;

}void quicksort(int* array, int left, int right)

}

//將兩個連續空間的資料整合到乙個連續空間

void mergedata(int * array, int left, int mid, int right,int * temp)

}void mergesort(int * array, int size)

_mergesort(array, 0, size, temp);

free(temp);

}

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...

七大排序演算法

首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...