递归法排序

#include "stdio.h"
#define MAX 100

void qsort(int v[],int left,int right);

 


main()
{
 int i,j,a[MAX];
 j=10;
 for(i=0;i<10;i++)
 a[i]=j--;
 for(i=0;i<10;i++)
 printf("%d ",a[i]);
 qsort(a,0,9);
 for(i=0;i<10;i++)
 printf("%d ",a[i]);
 getch();
}


void qsort(int v[], int left, int right)
   {
       int i, last;
       void swap(int v[], int i, int j);

       if (left >= right)
           return;
       swap(v, left, (left + right)/2);
       last = left;
       for (i = left + 1; i <= right; i++)
           if (v[i] < v[left])
               swap(v, ++last, i);
       swap(v, left, last);
       qsort(v, left, last-1);
       qsort(v, last+1, right);
   }

 void swap(int v[], int i, int j)
   {
       int temp;

       temp = v[i];
       v[i] = v[j];
       v[j] = temp;
   }

 

/*主程序为测试程序,程序的核心部分qsort(),该函数完成了对数组内元素的排序。排序的方法是,取数组中间位置的那个数A,用这个数将数组分成两部分,前一部分的数都比A小,后一部分的数都比A大,然后在把比A大的数看做一个数组,把比A小的数看做一个数组,重复上述过程直到每个数组中元素的个数是1为止。*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值