【C】排序
排序
所谓排序就是将一对零零散散的数据重新整理成从大到小或从小到大的序列。
排序的算法有很多,比如大家耳熟能详的冒泡排序、插入排序、希尔排序、选择排序等等。其中名声最大的当属快速排序,它是二十世纪十大算法之一,是由图灵奖得主东尼·霍尔提出的排序算法。
快速排序
快速排序算法的基本思想是:通过一趟排序将待排序数据分割成独立的两部分,其中一部分的所有元素均比另一部分的元素小,然后分别对这两部分继续进行排序,重复上述步骤直到排序完成。

void quick_sort();
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)
{
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;
}

浙公网安备 33010602011771号