永发信息网

谁会写,快速排序?

答案:3  悬赏:60  手机版
解决时间 2021-04-08 01:15
  • 提问者网友:書生途
  • 2021-04-07 11:20
谁会写,快速排序?
最佳答案
  • 五星知识达人网友:平生事
  • 2021-04-07 11:50
#include
#include
int partion(int low,int high,int a[10])
{//将数组a中下标为low至high的元素进行快速排序,其中枢轴元素为a[0]

int pivotkey=a[low],i=low,j=high;
while(i {
while(a[j]>=pivotkey&&j>i)
--j;
a[i]=a[j];
while(a[i]<=pivotkey&&j>i)
++i;
a[j]=a[i];
}
a[i]=pivotkey;
return i; //返回枢轴的位置
}
void qSort(int low,int high,int a[10])
{//排序结果为从a[low]到a[high]从大到小排列
int next_position;
if(low {
next_position=partion(low,high,a);
qSort(low,next_position-1,a);
qSort(next_position+1,high,a);
}
}
void main()
{
int length,*a,i;
scanf("%d",&length);
a=(int *)malloc(length*sizeof(int));
for(i=0;i scanf("%d",&a[i]);
qSort(0,length-1,a);
for(i=0;i printf("%d\n",a[i]);
free(a);
}
全部回答
  • 1楼网友:鱼芗
  • 2021-04-07 13:08
#include
#include
#include
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
int partition(int[], int, int);
void quicksort(int[], int, int);
int main(void) {
int number[MAX] = {0};
int i, num;
srand(time(NULL));
printf("排序前:");
for(i = 0; i < MAX; i++) {
number[i] = rand() % 100;
printf("%d ", number[i]);
}
quicksort(number, 0, MAX-1);
printf("\n排序后:");
for(i = 0; i < MAX; i++)
printf("%d ", number[i]);

printf("\n");
return 0;
}
int partition(int number[], int left, int right) {
int i, j, s;
s = number[right];
i = left - 1;
for(j = left; j < right; j++) {
if(number[j] <= s) {
i++;
SWAP(number[i], number[j]);
}
}
SWAP(number[i+1], number[right]);
return i+1;
}
void quicksort(int number[], int left, int right) {
int q;
if(left < right) {
q = partition(number, left, right);
quicksort(number, left, q-1);
quicksort(number, q+1, right);
}
}
  • 2楼网友:骨子里都是戏
  • 2021-04-07 12:11
void quic(int a[],int low,int high)
{
if(low>=high)
return ;
int i=low;
int j=high;
int v=a[low];
while(i{
while(iv)
j--;
a[i]=a[j];
while(ii++;
a[j]=a[i];
}
a[i]=v;
quic(a,low,i-1);
quic(a,i+1,high);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯