写个快排压压惊
#include<iostream>
using namespace std;int sort(int *arr,int a,int b)
{int i = a;int j = b;int tmp = arr[i];bool t = false;//标志标准是和左边还是和右边比较while (i!=j){if (t == false)//false和右边比较{if (tmp > arr[j])//基准比右边的数大,右边的数需要挪到左边{arr[i] = arr[j];++i;t = true;}else//基准比右边小,和右边下一个数字继续比较{--j;}}else//和左边比较{if (tmp < arr[i])//基准比左边小,左边的数需要挪至右边{arr[j] = arr[i];--j;t = false;}else//基准比左边大,和左边下一个数字比较{++i;} }}arr[i] = tmp;//基准写入数组//判断是否需要继续递归if (a<i-1){sort(arr, a, (i-1));}if (i+1 < b){sort(arr, i+1, b);}return 0;
}int main()
{int arr[10] = { 4 ,5 ,6, 9 ,8 ,5 ,3,7, 1, 2 };int i = 0, j = 10;for (int i = 0;i < 10;i++){cout << arr[i] <<" ";}cout << endl;
更多推荐
写个快排压压惊
发布评论