C语言程序快速排序

C语言程序快速排序,第1张

首先 你在if(i<j)

{r[j]=r[i]j--}}这里多了一个}符号

第二

while(ii&&r[j]>=r[0])

if(ii&&r[i]<=r[0])

这两个语句出现了ii 应该是i

其让码他的我还在帮你看

好吧,上面两个语句还有两个问题,应该把i换成j,否则一开始就判断为假

我完全看不懂你混乱的思维,直接给你贴滚闷一个快排大滑弯的代码

void quiksort(int a[],int low,int high){

int i = low

int j = high int temp = a[i] if( low <high){ while(i <j) {while((a[j] >= temp) &&(i <j)){ j--}a[i] = a[j] while((a[i] <= temp) &&(i <j)){i++} a[j]= a[i] }a[i] = temp quiksort(a,low,i-1) quiksort(a,j+1,high) }else{return }}

void main()

{

int arry[5] = {23,1,21,4,19}

quiksort(arry,0,4)

for(i=0i<5i++)

{

printf("%d ",arr[i])

}

printf("\n")

}

#include <stdio.h>

int partions(int l[],int low,int high)

{

int prvotkey=l[low]

l[0]=l[low]

while (low<high)

{

while (low<high&&l[high]>=prvotkey)

--high

l[low]=l[high]

while (low<high&&l[low]<=prvotkey)

++low

l[high]=l[low]

}

l[low]=l[0]

return low

}

void qsort(int l[],int low,int high)

{

int prvotloc

if(low<high)

{

prvotloc=partions(l,low,high) //将第一次排序的结果作为氏如枢轴

qsort(l,low,prvotloc-1)//递归调用排序 由low 到prvotloc-1

qsort(l,prvotloc+1,high)//递归调用排序 由 prvotloc+1到 high

}

}

void quicksort(int l[],int n)

{

qsort(l,1,n)//第一个作为枢轴 ,从第一个排到第n个

}

void main()

{

int a[11]={0,2,32,43,23,45,36,57,14,27,39}

for (int b=1b<11b++)

printf("%3d",a[b])

printf("改核孙\n")

quicksort(a,11)

for(int c=1c<11c++)

printf("%3d"核链,a[c])

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8226114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存