首页 > 其他 > 详细

算法导论第7章代码

时间:2014-03-26 02:48:26      阅读:315      评论:0      收藏:0      [点我收藏+]

本章讲解的是快速排序算法,快速排序有很多变种,不过基本原理是一样的。


int Partition(int *a, int low, int high)
{
    int key = a[low];
                   
    while (low < high) {
                       
        while (low < high && a[high] >= key) {
            high--;
        }
        a[low] = a[high];
                       
        while (low < high && a[low] <= key) {
            low++;
        }
        a[high] = a[low];
                       
    }
                   
    a[low] = key;
    return low;
                   
}
void QuickSort(int *a, int low, int high)
{
    if (low < high) {
        int mid = Partition(a, low, high);
        QuickSort(a, low, mid-1);
        QuickSort(a, mid+1, high);
    }
}
int main(int argc, const char * argv[])
{
    int a[] = {3, 5, 1, 2, 5, 4};
    int n = sizeof(a) / sizeof(*a);
    int low = 0;
    int high = n - 1;
                   
    QuickSort(a, low, high);
                   
    int i = 0;
    for (; i < n; i++) {
        printf("%d ", a[i]);
    }
                   
    return 0;
}


输出:1 2 3 4 5 5


本文出自 “移动开发” 博客,请务必保留此出处http://ikinglai.blog.51cto.com/6220785/1384018

算法导论第7章代码,布布扣,bubuko.com

算法导论第7章代码

原文:http://ikinglai.blog.51cto.com/6220785/1384018

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!