#include<iostream>//选择第一个数为基准数,已基准为中心将小于它的排在前面,大于等于它的排在后面intpartition(int arr[],int low,int high){int i = low;int j = high;int base = arr[low];if(low < high){while(i < j){while(i < j&&arr[j]>= base){
j--;}if(i < j)//右边已经找到小于基数的数{
arr[i++]= arr[j];}while(i < j && arr[i]< base){
i++;}if(i < j)//左边边已经找到大于基数的数{
arr[j--]= arr[i];}
arr[i]= base;}return i;}}voidQuickSort(int*arr,int low,int high){if(low < high){int index =partition(arr, low, high);QuickSort(arr, low, index -1);QuickSort(arr, index +1, high);}}intmain(){int beauties[]={163,161,158,165,171,170,163,159,162};int len =sizeof(beauties)/sizeof(beauties[0]);QuickSort(beauties,0, len-1);for(int i =0; i < len; i++){printf("%d ", beauties[i]);}system("pause");return0;}
冒泡排序
#include<iostream>//交换voidswap(int&num1,int&num2){int temp = num1;
num1 = num2;
num2 = temp;}voidBubbleSort(int arr[],int len){for(int i =0; i < len -1; i++){bool sorted =true;for(int j =0; j < len -1- i; j++){if(arr[j]> arr[j +1]){swap(arr[j], arr[j +1]);
sorted =false;}}if(sorted)break;}}intmain(){int beauties[]={163,161,158,165,171,170,163,159,162};int len =sizeof(beauties)/sizeof(beauties[0]);BubbleSort(beauties, len);for(int i =0; i < len; i++){printf("%d ", beauties[i]);}system("pause");return0;}
希尔排序
#include<iostream>/*希尔排序*///无需大幅移动数据即可完成整个数组的排序//相当于插入排序的优化voidShellSort(int arr[],int len){int gap = len /2;for(; gap >0; gap = gap /2){for(int i = gap; i < len; i++){int current = arr[i];int j =0;for(j = i - gap; j >=0&& arr[j]> current; j -= gap){
arr[j + gap]= arr[j];}
arr[j + gap]= current;}}}intmain(){int beauties[]={163,161,158,165,171,170,163,1,2};int len =sizeof(beauties)/sizeof(beauties[0]);ShellSort(beauties, len);for(int i =0; i < len; i++){printf("%d ", beauties[i]);}system("pause");return0;}
选择排序
#include<iostream>usingnamespace std;//交换两个变量的值voidswap(int*num1,int*num2){int temp =*num1;*num1 =*num2;*num2 = temp;}voidSelectSort1(int arr[],int len){for(int i =0; i < len -1; i++){int max =0;for(int j =1; j < len - i; j++){if(arr[j]> arr[max]){
max = j;}}if(max !=(len - i -1)){swap(&arr[max],&arr[len - i -1]);//和最后一个交换}}}voidSelectSort2(int arr[],int len){int i, j;for(i =0; i < len -1; i++){int min = i;for(j = i +1; j < len; j++){if(arr[j]< arr[min]){
min = j;}}swap(&arr[min],&arr[i]);//和第一个交换}}intmain(){int beauties[]={163,161,158,165,171,170,163,159,162};int len =sizeof(beauties)/sizeof(beauties[0]);SelectSort1(beauties, len);for(int i =0; i < len; i++){printf("%d ", beauties[i]);}system("pause");return0;}
插入排序#include<iostream>/*插入排序*/void InsertSort(int arr[], int len){ int preIndex = 0, current = 0; for (int i = 1; i < len; i++) { preIndex = i - 1; current = arr[i]; while (preIndex >= 0 && arr[preIndex] > current)