常用排序算法之——快速排序(C语言+VC6.0平台),算法vc6.0

Posted by

经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解。

常用排序算法之——快速排序(C语言+VC6.0平台),算法vc6.0

经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解。

#include<stdio.h>

 int partition(int num[],int low,int high) //以key为基准
将待排数列“高”、“低
”两部分,“高”部分的所有数据比key大,“低”部分的数据都比key小

{

         int left,right,key;

         left=low;right=high;key=num[low];

         while(left<right)

         {

                  while(left<right && num[right]>=key)

                          right–;

                  num[left]=num[right];

                   while(left<right && num[left]<=key)

                          left++;

                  num[right]=num[left];

         }

         num[left]=key;

         return left;

}

 void quick_sort(int num[],int low,int high)//递归实现快速排序

{

         if(low<high)

         {

                  int pos=partition(num,low,high);

                  quick_sort(num,low,pos-1);

                  quick_sort(num,pos+1,high);

         }

}

int main()

{

         int data[10]={32,33,21,14,36,7,6,4,2,11};

         int i;

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

                  printf(“%d “,data[i]);

         printf(“n”);

          quick_sort(data,0,9);

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

                  printf(“%d “,data[i]);

         printf(“n”);

}

经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解。
#inc…

#include<stdio.h>

int partition(int num[],int low,int high) //以key为基准
将待排数列“高”、“低
”两部分,“高”部分的所有数据比key大,“低”部分的数据都比key小

{

int left,right,key;

left=low;right=high;key=num[low];

while(left<right)

{

while(left<right && num[right]>=key)

right–;

num[left]=num[right];

while(left<right && num[left]<=key)

left++;

num[right]=num[left];

}

num[left]=key;

return left;

}

void quick_sort(int num[],int low,int high)//递归实现快速排序

{

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注