手机
当前位置:查字典教程网 >编程开发 >C语言 >纯C语言:分治快速排序源码分享
纯C语言:分治快速排序源码分享
摘要:复制代码代码如下:#includevoidfun(intarray[],intlow,inthigh){inti=low;intj=high...

复制代码 代码如下:

#include<stdio.h>

void fun(int array[],int low,int high)

{

int i = low;

int j = high;

int temp = array[i];

while(i < j)

{

while((array[j] >= temp) && (i < j))

{

j--;

array[i] = array[j];

}

while((array[i] <= temp) && (i < j))

{

i++;

array[j]= array[i];

}

}

array[i] = temp;

if(i-1>low)

{

fun(array,low,i-1);

}

if(high>i+1)

{

fun(array,j+1,high);

}

else

{

return;

}

}

void main()

{

int array[10];

printf("输入十个数字进行快速排序:n");

for(int i=0;i<10;i++)

{

printf("请输入第%d个数:",i+1);

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

}

fun(array,0,9);

printf("对这十个数字从小到大快速排序得:");

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

{

printf("%d ",array[i]);

}

printf("n");

}

2

#include<iostream.h>

#include<malloc.h>

void interchange(int* m,int* n)

{

int temp=*m;

*m=*n;

*n=temp;

}

int partition(int array[],int p,int q)

{

int i,j;

i=p;

j=q+1;

while(1)

{

do i++;

while((array[i]<array[p])&&(i!=q));

do j--;

while((array[j]>array[p])&&(j!=p));

if(i<j)

interchange(&array[i],&array[j]);

else

break;

}

interchange(&array[p],&array[j]);

return j;

}

void quicksort(int array[],int p,int q)

{

int j;

if (p<q)

{

j=partition(array,p,q);

quicksort(array,p,j-1);

quicksort(array,j+1,q);

}

}

void main()

{

int n,i;

cout<<"please input the number of array:";

cin>>n;

int* a=(int*)malloc(n*sizeof(int));

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

{

cout<<"please the "<<i+1<<"th element :";

cin>>a[i];

}

cout<<"before sort:";

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

cout<<a[i]<<" ";

cout<<endl;

quicksort(a,0,n-1);

cout<<"after sort:";

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

cout<<a[i]<<" ";

cout<<endl;

}

【纯C语言:分治快速排序源码分享】相关文章:

对C语言中递归算法的深入解析

c语言冒泡排序法代码

C语言中怎么在main函数开始前执行函数

C语言中的内存泄露 怎样避免与检测

C 语言基础教程(我的C之旅开始了)[六]

C语言typedef与复杂函数声明问题的深入解析

用c语言实现冒泡排序,选择排序,快速排序

浅析C语言中的内存布局

C语言 数与串之间转换的方法

c语言10个经典小程序

精品推荐
分类导航