C语言快速排序

C语言快速排序,第1张

#include<stdio.h>void quickSort(int *p,int head,int tail)

{

int low=head,high=tail

int s=p[head]

if(head>=tail)return

while(low<high){

while(low<high&&p[high]>s)high--

if(low<high)p[low++]=p[high]

while(low<high&&p[low]<=s)low++

if(low<high)p[high--]=p[low]

}p[low]=s

quickSort(p,head,low-1)quickSort(p,low+1,tail)

}void main()

{

int i=0

int array[10]={3,7,2,8,6,8,4,3,2,9}

quickSort(array,0,9)

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

{

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

}

printf("\n")

}

首先 你在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")

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存