c 常見的排序演算法

2021-09-27 02:50:44 字數 1264 閱讀 6660

//與選取的基準值進行比較

int getpartion(int *array, int low, int high)

return low;//返回key值的下標

}//low為陣列最左邊位置,high為陣列最右邊位置

void quitsort(int *buf, int low, int high)

}

//最簡單的插入排序

//向前比較,當前者大於後者時,交換位置

for (int i = 1; i < length; i++)

}

2023年shell發明,第乙個突破o(n2)的排序演算法,是簡單插入排序的改進版。它與插入排序的不同之處在於,它會優先比較距離較遠的元素。希爾排序又叫縮小增量排序。

void shellsort(int array, int n)  //希爾排序函式

array[k + step] = temp; //把小的值往前插入}}

工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

void select(int arr,int len)

} }}

參考自 【排序】堆排序,c++實現

步驟一:建立大根堆–將n個元素組成的無序序列構建乙個大根堆;

步驟二:交換堆元素–交換堆尾元素和堆首元素,使堆尾元素為最大元素;

步驟三:重建大根堆–將前n-1個元素組成的無序序列調整為大根堆;

重複執行步驟二和步驟三,直到整個序列有序。
void adjust (int arr, int len, int index)

for (int i = 0; i < 8; i++)

cout << endl;

}// 堆排序

void heapsort(int arr, int size)

// 調整大根堆

for (int i = size - 1; i >= 1; i--)

本文參考以下部落格

輕鬆搞定十大排序演算法(c++版)

【排序】堆排序,c++實現

常見排序演算法 C

時間複雜度o n 2 原地,穩定.void bubble sort vector int nums if flag break 如果沒有交換說明已經有序,跳出迴圈 return 時間複雜度o n 2 原地,穩定.void insert sort vector int nums nums i 1 va...

幾種常見的排序演算法(C

說到排序,網上一搜就有一大堆的部落格資料,涵蓋各種語言實現,而許多演算法書中更是寫的很詳細,寫此部落格只是記錄下所敲的這幾行 以便日後檢視。直接貼domo ifndef sort h define sort h include include using namespace std template...

C語言常見的排序演算法

1 直接插入排序 思路 將待插入的數與有序區的數從右到左依次比較。include void insort int s,int n 自定義函式isort s j 1 s 0 在確定的位置插入s i void main 2 希爾排序 include void shsort int s,int n 自定義...