开始学数据结构——(六):快速排序

<p>/*终于到快排了,好慢好慢。。。</p><p>先说思想,其实是冒泡排序的优化,首先随机选取一个数作为基准,一般是第一个数。</p><p>然后遍历一遍,把比这个数小的放在他左边,把比这个数大的放在右边。  他在中间。</p><p>然后递归的调用这个函数,左右两边都递归本函数调用,即可。</p>SQ 2014 - 08 -13
*/
#include<stdio.h>

void quick_sort1(int *, int ,int);
int AdjustArray(int *,int ,int);

int main (){

int s[10] = {0,2,4,6,8,9,7,5,3,1};

int i= 0;

while ( i < ( sizeof(s)/(sizeof(s[0]))  ) ) {
        printf ("%d", s[i]);
        i ++ ;
        }

quick_sort1(s,0,9);

printf("ok!\n");

i = 0;
while ( i < sizeof(s) / ( sizeof(s[0]) ) ) {
        printf ("%d", s[i]);
        i ++ ;
        }

return 0;
}

void quick_sort1(int s[], int l, int r)
{
        int i;
        if (l < r)
    {
                i = AdjustArray(s, l, r);
                quick_sort1(s, l, i - 1);
                quick_sort1(s, i + 1, r);
        }
}

int AdjustArray(int s[], int l ,int r){

int i ,j;
int x;
x = s[l];
i = l;
j = r;

while( i < j){

        while ( ( x <= s[j] )&& (i < j ))
                j -- ;

        if ( (x > s[j]) && (i < j) ) {
                s[i] = s[j];
                i ++ ;
                }

        while ( (x > s[i]) && (i < j) )
                i ++ ;

        if( (x < s[i]) && (i < j)){
                s[j] = s[i];
                j --;
                }

}
        s[i] = x;

        return i;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值