|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题在代码注释里!!!!
问题在代码注释里!!!!
问题在代码注释里!!!!
问题在代码注释里!!!!
#include<stdio.h>
void quick_sort(int array[],int left,int right);
void quick_sort(int array[],int left,int right)
{
int i=left,j=right;
int temp;
int pivot;
pivot=array[(left+right)/2];
while(i<=j)
{
while(array[i]<pivot)
{
i++;
}
while(array[j]>pivot)
{
j--;
}
if(i<=j)
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
i++;//这两行干嘛用的,没有这两行前边循环也会++啊!但是没有这两行就排序不出来了
j--;//这两行干嘛用的,没有这两行前边循环也会++啊!但是没有这两行就排序不出来了
}
}
if(left<j)
{
quick_sort(array,left,j);
}
if(i<right)
{
quick_sort(array,i,right);
}
}
int main(void)
{
int array[]={73,108,111,118,101,70,105,115,104,67,46,99,111,109};
int i,length;
length=sizeof(array)/sizeof(array[0]);
quick_sort(array,0,length-1);
printf("快速排序后的结果为:");
for(i=0;i<length;i++)
{
printf("%d ",array[i]);
}
putchar('\n');
return 0;
}
问题在代码注释里!!!!
问题在代码注释里!!!!
问题在代码注释里!!!!
问题在代码注释里!!!!
这个快排到最后一层,是数组里只剩下两个个元素,如果if里没有i++和j--
的话,就永远是i<j或者j==i,出不了while循环了,
不过这种算法比传统的快排快一点
|
|