C语言实现快速排序算法
快速排序算法:
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序
的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然
后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到
整个数据变成有序序列....
C语言实现:
#include <stdio.h>
#include <stdlib.h>
void quick_short(int array[] , int left , int right);//声明函数
void quick_short(int array[] , int left , int right)
{
int i = left;//数组array下标第一个元素指向i
int j = right;//数组array下标最后一个元素指向j
int temp;//用于两个数比较后交换
int point;//定义一个基点,也就是array中间值,用于将array数组分为左右两个
point = array[(left + right) / 2];
//开始循环,如果左边的元素小于右边的元素,继续循环遍历
while(i <= j)
{
//进行左边元素的比较,直到找到左边的元素大于基点
while(array[i] < point)
{
i++;
}
//进行右边元素的比较,直到找到右边的元素大于基点
while(array[j] > point)
{
j--;
}
//判断结束整个循环;如果满足,进行左右两个元素的交换
if(i <= j)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if(left < j)
{
quick_short(array , left , j);//左边部分进行迭代递归
}
if(right > i)
{
quick_short(array , i , right);//右边部分进行迭代递归
}
}
int main(void)
{
int array[10] = {62 , 111 , 125 , 68 , 90 , 148 , 169 , 2 , 111 , 86};
int length = sizeof(array)/sizeof(array[0]);//数组大小÷元素宽度=数组长度
int i;//用于遍历输出排序好的数组
quick_short(array , 0 , length-1);
printf("Sequence after shorting :\n");
for(i = 0;i<length;i++)
{
printf(" %d ",array[i]);
}
putchar('\n');
return 0;
}
结果
Sequence after shorting :
2 62 68 86 90 111 111 125 148 169
小白快乐学C,每天进步一点点,有什么有趣的记得分享哦!