排序演算法記錄

2021-09-30 12:49:56 字數 1930 閱讀 1135

// sort.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include

using namespace std;

//插入排序

//a 指向陣列第乙個元素指標; n陣列元素個數

void insertsort(int* a, int n)}}

}//希爾排序

//a 指向陣列第乙個元素指標; n陣列元素個數

void shellsort(int* a, int n)}}

d /= 2;

//當然d的值不一定用這種方法取}}

//氣泡排序

//a 指向陣列第乙個元素指標; n陣列元素個數

void bublesort(int* a, int n)}}

}//選擇排序

//a 指向陣列第乙個元素指標; n陣列元素個數

void selectsort(int* a, int n)

if (min != i)}}

}//快速排序

//a 指向陣列第乙個元素指標; m第乙個元素下標; n最後乙個元素下標

void quicksort(int* a, int m, int n)

quicksort(a, min, m - 1);

//遞迴排序剩下的值

quicksort(a, m + 1, max);}}

//歸併排序

//a 指向陣列第乙個元素指標; low最小下標; mid中間下標; high最大下標

void merge(int* a, int low, int mid, int high)

else

}while (indexa < mid)

while (indexb < high + 1)

int index = 0;

while (v->size()>0)

//將排序了的資料寫入原陣列中

}//a 指向陣列第乙個元素指標; m第乙個元素下標; n最後乙個元素下標

void mergesort(int* a, int m, int n)

}//堆排序

//調整堆

//a 指向陣列第乙個元素指標; now根節點; n節點數

void adjustheap(int* a, int now, int n)

if (rightchilda[max])

//rightchild

if (max != now)

//max值改變則把大值移至根節點}}

//建立堆

void buildheap(int* a, int n)

}//a 指向陣列第乙個元素指標; n陣列元素個數

void heapsort(int* a, int n)

}//桶排序

//a 指向陣列第乙個元素指標; n陣列元素個數

int getbuketsize(int* a, int n)

//獲取桶的個數,根據需要可以採用其他取值方法,此處浪費空間

}return a[size]+1;

//最大元素值+1(包含0)

}//a 指向陣列第乙個元素指標; n陣列元素個數

void buketsort(int* a, int n)

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

//對應的元素存入相應的桶中,桶中資料個數加1

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

//從裝最小值的桶開始取資料}}

int _tmain(int argc, _tchar* ar**)

;//heapsort(a, 16);

buketsort(a, 16);

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

return 0;

}

排序演算法思想記錄 快速排序演算法

思路 選取陣列中任意乙個數字作為對比位pivot,然後定義兩個指標位left right,分別從陣列開始和結束位置向內掃瞄,每次先動乙個指標位,如right遇到小於pivot的值,將該值存放到左指標處,接著左指標向內位移,遇到大於pivot的值存放至右指標處,依次迴圈到left與right重合,則完...

演算法實現記錄 希爾排序

簡而言之,這是基於插入排序的一種改進版本。原理就是通過選取步長 間隔 為乙個變常數的值得插入排序,來將陣列變得有序 而我們知道,插入排序對於有序資料的處理效果是很好的。按照這個思路,實現如下 include include include include using namespace std vo...

排序演算法學習記錄

口述思路 內外雙迴圈,內迴圈中當 n n 1 時,進行資料對調,目的就是為了讓n永遠為最小的數,以此類推,我們的排序一般都是從左向右,左邊是最小的,右邊是最大的。口述思路 特點就是運用遞迴,單個迴圈體,預設要將第乙個n設為middle變數,然後迴圈開始後,將大於middle的記錄到right變數中 ...