几种排序方法的实现

来源:互联网 发布:centos hadoop ssh 编辑:程序博客网 时间:2024/06/15 01:55
#include <iostream>#include <stdio.h>using namespace std;//插入排序 void insert_sort_increase(int *num, int size){    int tmp = 0;int j = 0;for (int i = 1; i < size; i++){if (num[i] < num[i-1]){tmp = num[i];for (j = i; j > 0 && tmp < num[j-1]; j-- ){num[j] = num[j-1];}num[j] = tmp;}}}//冒泡排序void bubble_sort_increase(int *num, int size){int tmp;for (int i = 1; i < size; i++){for (int j = 0; j < size-i; j++){if (num[j]>num[j+1]){tmp = num[j];num[j] = num[j+1];num[j+1] = tmp;}}}}//选择排序void select_sort_increase(int *num, int size){int tmp;int pos;for (int i = 1; i < size; i++){tmp = num[i-1];pos = i-1;for (int j = i ; j < size; j++){if (num[j] < tmp  ){tmp = num[j];pos = j;}}num[pos] = num[i-1];num[i-1] = tmp;}}//谢尔排序void shell_sort_increase(int *num, int size){int tmp = 0;int j = 0;for (int gop = size/2; gop > 0; gop /=2){for (int i = gop; i < size; i++){tmp = num[i];for ( j = i; j >= gop && tmp<num[j-gop]; j -= gop){num[j] = num[j-gop];}num[j] = tmp;}}}//快速排序void quick_sort_increase(int *num, int left, int right){int l = left;int r = right;    int tmp = num[l]; //选取第一个为驱轴while (l < r){while(r > l && tmp <= num[r]){r--;}if (l < r){num[l++] = num[r];}while (r > l && tmp >= num[l]){l++;}if (l < r){num[r--] = num[l];}}num[l] = tmp;if(left < l-1){quick_sort_increase(num, left, l-1);}if (r+1 < right){quick_sort_increase(num, r+1, right);}}void quick_sort_increase(int *num, int size){quick_sort_increase(num,0, size-1);}int main(){int num[10]={5,1,6,45,22,24,51,23,12,17};//insert_sort_increase(num, 10);//bubble_sort_increase(num, 10);//select_sort_increase(num, 10);//shell_sort_increase(num, 10);quick_sort_increase(num, 10);for (int i=0; i < 10; i++){cout << num[i] << " ";}cout << endl << "*********************************************" << endl;getchar();return 0;}

0 0
原创粉丝点击