快速排序
快速排序就是在待排序的一组数中找一个基准(一般是最左边的数),将小于基准的数移到左边,大于基准的数移到右边,最后将基准插在中间
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <ctime>
#define MAX 100
using namespace std;
int partitions(int (&num)[MAX],int left,int right)
{
int temp,i,j;
temp = num[left];
i = left;
j = right;
while(i<j) //一趟快速排序
{
while(i<j&&num[j]>temp)
{
j--;
}
if(i<j)
{
num[i]=num[j];
i++;
}
while(i<j&&num[i]<temp)
{
i++;
}
if(i<j)
{
num[j]=num[i];
j--;
}
}
num[i]=temp;
return i;
}
void quicksort(int (&num)[MAX], int left, int right)
{
int s;
if(left<right) //快排的递归结束条件
{
s = partitions(num,left,right);
quicksort(num,left,s-1);
quicksort(num,s+1,right);
}
}
int main()
{
int x[MAX],i;
cout<<"请输入一组数:(以-1结束)"<<endl;
for(i=0;;i++)
{
cin>>x[i];
if(x[i]==-1)
break;
}
quicksort(x, 0, i-1);
for(int j=0;j<i;j++)
cout<<x[j]<<" ";
return 0;
}
博客持续更新算法题,欢迎留言讨论,有爱的程序员😎