选择排序:
//2.1.2选择排序
void selecet_sort(int *arr,int len) {
/*int leng = arr.length();*/
//int min = arr[0];
for (int i = 0; i < len; ++i) {
int min = i; //赋值最小值的下标
for (int j = i; j < len; ++j) {
if (arr[j] <arr[min]) {
//min = arr[j];
swap(arr[j], arr[min]);
}
}
}
}
int main()
{
int arra[] = { 54,12,18,55,1745,45,469,789,789 };
selecet_sort(arra, 9);
for (auto i : arra) cout << i << endl;
}
直接插入排序:
//2.1.3 直接插入排序
void inseret_sort(int *arr,int len) {
for (int i = 1; i < len; ++i) {
int key = arr[i]; //监视哨key
int j = i - 1;
for (j; j >=0 && (key<arr[j]); --j) {
arr[j + 1] = arr[j];
}
arr[j+1] = key;
}
}
int main() {
int arra[] = { 54,12,18,54,1745,45,469,789,785 };
inseret_sort(arra, 9);
for (auto i : arra) cout << i << endl;
}
希尔排序:
//2.1.6 希尔排序;
void shell_sort(int *a,int len){
int h = 1;
while (h < len / 3) h = 3 * h + 1;
while (h >=1) {
for (int i = h; i < len; ++i) {
// 直接插入排序算法,将1变成h
int key = a[i];
int j = i-h; //最开始比较的位置要弄清楚,初始比较位置
for (j; j >=0 && (a[j] > key); j -= h)
a[j+h] = a[j];
a[j+h] = key;
}
h = h / 3; //进行下一次希尔比较排序,h从大往小来
}
}
int main() {
//int array[11] = { 54,12,18,54,1745,45,469,789,785,78,99 };
int array[11] = { 2, 1, 4, 3, 11, 6, 5, 7, 8, 10, 15 };
shell_sort(array, 11);
for(auto it : array)
{
cout << it << endl;
}
}