码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2016-05-09 14:18:45      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

基本思想:第一趟取一个基点,然后把序列分成两部分,小于基点和大于基点,每一部分再递归调用快速排序。不稳定。

//
//  QuickSort.c
//  libin
//
//  Created by 李宾 on 16/5/9.
//  Copyright © 2016年 李宾. All rights reserved.
//

#include <stdio.h>
#define SWAP(a, b) { int temp; temp = a; a = b; b = temp;}
void Quick_Sort(int *p , int left, int right)
{
    int left_index = left;
    int right_index = right;
    int pivot = p[(left_index + right_index)/2];
    while (left_index <= right_index) {
        while (p[left_index] < pivot) {
            left_index ++;
        }
        while (p[right_index] > pivot) {
            right_index --;
        }
        if (left_index <= right_index) {
            SWAP(p[left_index], p[right_index]);
            left_index ++;
            right_index --;
        }
    }
    if(left_index < right )
    {
        Quick_Sort(p, left_index, right);
    }
    if(right_index > left )
    {
       Quick_Sort(p, left, right_index);
    }
    
}

int main()
{
    int a[5] = { 10 , 4, 13, 6, 29 };
    Quick_Sort(a, 0, 4);
    for (int i = 0; i < 5; i ++) {
        printf("%d\t", a[i]);
    }
    printf("\n");
}

 

快速排序

标签:

原文地址:http://www.cnblogs.com/masterlibin/p/5473611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!