快速排序 C语言实现

叁歲伎倆 2022-03-29 15:28 301阅读 0赞

Program 1

#include “stdio.h”
#include “conio.h”

void quick_sort(int *a,int left,int right);

main()
{
int i,j,temp;
int a[10]={30,50,40,10,60,70,80,20,27,11};
for(i=0;i<10;i++)
printf(“%d “,a[i]);
printf(“/n”);

quick_sort(a,0,9);

for(i=0;i<10;i++)
printf(“%d “,a[i]);
printf(“/n”);
getch();
}

void quick_sort(int *a,int left,int right)
{
int low,upper,point;
int t;

if(left<right)
{
point=a[left];
low=left;
upper=right+1;

while(1)
{
while(a[++low]point);
if(low>=upper)
break;

t=a[low]; a[low]=a[upper]; a[upper]=t;

}

a[left]=a[upper];
a[upper]=point;

quick_sort(a,left,upper-1);
quick_sort(a,upper+1,right) ;

}

}

Program 2

int a[10000];

int partion(int lo, int hi)
{
a[0] = a[lo];

while (lo=a[0]) hi—;
a[lo] = a[hi];
while (lo<hi&&a[lo]<=a[0]) lo++;
a[hi] = a[lo];
}
a[lo] = a[0];
return lo;
}

void qsort(int i, int j)
{
int k;
if (i<j)
{
k = partion(i, j);
qsort(i, k-1);
qsort(k+1, j);
}
}
这个是数据结构书的。

Program 3

void swap(int left,int right)
{
char *temp;
temp = array[left];
array[left] = array[right];
array[right] = temp;
}
void Qsort(int left,int right)
{
int pos;
int last;
int loop;

if(left<right)
{
last=left;
for(loop=left+1;loop<=right;loop++)
if(array[loop]<array[left])
swap(loop,++last);
swap(left,last);
Qsort(left,last-1);
Qsort(last+1,right);
}
}

发表评论

表情:
评论列表 (有 0 条评论,301人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c语言实现快速排序

    快速排序是一种快速的排序算法。它的基本思想是,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别

    相关 快速排序算法(C语言实现

    快速排序算法(C语言实现) 快速排序是一种基于比较的排序算法,它采用递归分治策略来排序一个序列。快速排序算法是所有基于比较的排序算法中,平均情况下表现最好的一种算法。快速排序

    相关 快速排序C语言实现

    快速排序是一种常用且高效的排序算法,它基于分治策略,通过将数组分成较小的子数组并对它们进行排序,最终将它们合并以得到排序后的数组。下面我们将介绍如何使用C语言实现快速排序,并附