标签:des class blog http tar com
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
/*
Function: quicksort
Description: 快速排序
Calls: swap
Input:
--v:数组
--left:数组下标
--rigt:数组下标
Return: void
Others:
*/
void quicksort(int v[],int left,int right){
void swap(int v[],int i,int j);
if(left<right){
int i=left,j;
int x=v[i];/*第一个元素作为基准元素*/
for (j=i+1;j<=right;j++)/*从第二个元素开始从左向右依次和基准元素比较,小的元素和已比较过的大的元素相互交换位置*/
{
if(v[j]<x&&i!=j){
i++;
swap(v,i,j);
}
}
swap(v,left,i);/*基准元素和最后一个比较过的小的元素交换位置,至此,小的元素在基准元素左边,大的元素在其右边*/
quicksort(v,left,i-1);/*对小的元素区间继续重复上面步骤*/
quicksort(v,i+1,right);/*对大的元素区间继续重复上面步骤*/
}
}
void swap(int v[],int i,int j){
int temp=v[i];
v[i]=v[j];
v[j]=temp;
}
#include <stdio.h>
int main(void)
{
void quicksort(int v[]);
int v[]= { 70, 30, 40, 60, 10, 20, 50, 100, 80, 90 };
int length=sizeof(v)/sizeof(int);
int i;
quicksort(v,0,length-1);
for (i=0;i<length;i++)
{
printf("%d\n",v[i]);
}
return 0;
}
参考:
标签:des class blog http tar com
原文地址:http://www.cnblogs.com/Benoly/p/3799673.html