//目前不能用于出现重复数字的情况
//待我想想,想到胃痛
//递归缩小区间至1个数
#include<stdio.h>
#include<iostream.h>
#include<malloc.h>
#include<cstdlib>//包含exit头文件
#include<math.h>
#include<string.h>
#include "time.h"//用于获取程序运行时间
#define MAXSIZE 100
#define OK 1
#define ERROR 0
typedef int Status;
void swap(int *a,int *b)//真正交换了
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int *a,int begin,int end)
{
if(begin>=end)//完成一轮比较
{
return;
}
int i=begin;
int j=end;
int key=a[begin];
//int keylocation=0;
while(i<j)
{
while((i<j)&&(key<=a[j]))
{
j--;
}
//if(i==0)
//{
// swap(&a[keylocation],&a[j]);
//}else
//{
swap(&a[i],&a[j]);
//}
while((i<j)&&(key>=a[j]))
{
i++;
}
swap(&a[j],&a[i]);
}
//a[i]=key;
quicksort(a,begin,i-1);
quicksort(a,i+1,end);
}
void showlist(int *a,int length)
{
for(int i=0;i<length;i++)
{
cout<<a[i]<<endl;
}
}
void main()
{
int a[]={3,1,5,2,8,10,9};
int length=sizeof(a)/sizeof(a[0]);//これめちゃ面白~~~い!
cout<<"表长"<<length<<endl;
showlist(a,length);
quicksort(a,0,length-1);//1~9
cout<<"排序后"<<endl;
showlist(a,length);
}
快速排序(C)
最新推荐文章于 2023-12-01 23:14:38 发布