// 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變數中 ...