快速排序算法.cpp

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

void swap(int *x,int *y)

{

int temp;

temp = *x;

*x = *y;

*y = temp;

}

int choose_pivot(int i,int j )

{

return((i+j) /2);

}

void quicksort(int list[],int m,int n)

{

int key,i,j,k;

if( m < n)

{

k = choose_pivot(m,n);

swap(&list[m],&list[k]);

key = list[m];

i = m+1;

j = n;

while(i <= j)

{

while((i <= n) && (list[i] <= key))

i++;

while((j >= m) && (list[j] > key))

j--;

if( i < j)

swap(&list[i],&list[j]);

}

// 交换两个元素的位置

swap(&list[m],&list[j]);

// 递归地对较小的数据序列进行排序

quicksort(list,m,j-1);

quicksort(list,j+1,n);

}

}

void printlist(int list[],int n)

{

int i;

for(i=0;i

printf("%d\t",list[i]);

}

void main()

{

const int MAX_ELEMENTS = 10;

int list[MAX_ELEMENTS];

int i = 0;

printf("请输入十位排序的数字,按enter终止输入:");

for(i = 0; i < MAX_ELEMENTS; i++ )

{

scanf("%d",&list[i]);

}

printf("排序前的序列:\n");

printlist(list,MAX_ELEMENTS);

// sort the list using quicksort

quicksort(list,0,MAX_ELEMENTS-1);

// print the result

printf("使用快速排序算法进行排序之后的序列:\n");

printlist(list,MAX_ELEMENTS);

}

相关文档
最新文档