快速排序(two poiner 分治)以及生成随机数的技巧

#include
#include
#include
#include
#include
#include
using namespace std;
//快速排序:
//思想:分治,每次一能将一个元素放到该有位置
//利用two pointer技巧完成每一次的操作
int partition(int a[],int left,int right)//模拟一次排序
{
int temp=a[left];//首先获得第一个元素
while(left {
while(left=temp)//先从右边开始 不然会出错
//这里必须有一个有等号不然一个数组有相同元素会bug
right–;
a[left]=a[right];
while(left left++;
a[right]=a[left];
}
a[left]=temp;
return left;
}
void quick_sort(int a[],int left,int right)
{
if(left {
int mid=partition(a,left,right);
quick_sort(a,left,mid-1);
quick_sort(a,mid+1,right);
}
}
int a[10];
int main()
{
srand((unsigned)time(NULL));//初始化随机数种子 在main函数开头 在需要
//随机数的时候生成随机数,注意引入time.h和stdlib.h头文件,随机数范围是(0,32767)
//要想得到指定范围(a,b)的随机数:rand()%(b-a+1)+a;这是小数范围 可以通过乘法获得大范围
for(int i=0;i<10;i++)
{
a[i]=rand();
cout< }
cout< quick_sort(a,0,9);
for(int i=0;i<10;i++)
cout< return 0;
}

你可能感兴趣的:(算法笔记入门篇:模拟,贪心,二分,散列,递归,排序)