|

楼主 |
发表于 2019-2-16 08:30:35
|
显示全部楼层
代码如下!!!
#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--;
}
//如果i<=j,则互换元素
if (i <= j)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
//按第一躺的方法递归左右两边的子序列
if (left < j)//从左往右 left等于零 只要j还没到最左边的位置上 就会递归排下去算下去 这样做左边的永远比右边的要小
{
quick_sort(array,left,j);
}
if (i < right)
{
quick_sort(array,i,right);//左边要比右边的要小
}
}
int main()
{
int array[] = {73,34,45,2,3,5,7,8,9,29,89,100,13,15};
int i,length;
length = sizeof(array)/sizeof(array[0]);//所有数据的字节数除以一个数据的字节数即为数据的个数
//printf("%d",length); 14
quick_sort(array, 0, length-1);//left是0
printf("排序后的结果是:\n");
for(i = 0 ; i < length; i++)
{
printf("%d ", array[i]);
}
|
|