zoukankan      html  css  js  c++  java
  • 快速排序

    #include <stdio.h>
    #include <stdlib.h>
    
    int n;
    
    /*
     * 分割使枢轴记录的左边元素比右边元素小
     */
    int Partition(int *array, int low, int high)
    {
        int pivotkey = array[low];
        array[0] = array[low];
        while (low < high)
        {
            while (low < high && array[high] >= pivotkey)
            {
                high--;
            }
            array[low] = array[high];
            while (low < high && array[low] <= pivotkey)
            {
                low++;
            }
            array[high] = array[low];
        }
        array[low] = array[0];
        return low;
    }
    
    /*
     * 快速排序递归实现
     */
    void QuickSort(int *array, int low, int high)
    {
        if (low < high)
        {
            int pivotloc = Partition(array, low, high);
            QuickSort(array, low, pivotloc - 1);
            QuickSort(array, pivotloc + 1, high);
        }
    }
    
    int main()
    {
        int i;
        int *array;
        printf("请输入数组的大小:");
        scanf("%d", &n);
        array = (int*) malloc(sizeof(int) * (n + 1));
        printf("请输入数据(用空格分隔):");
        for (i = 1; i <= n; i++)
        {
            scanf("%d", &array[i]);
        }
        QuickSort(array, 1, n);
        printf("排序后为:");
        for (i = 1; i <= n; i++)
        {
            printf("%d ", array[i]);
        }
        printf("
    ");
    }
  • 相关阅读:
    .NET牛人应该知道些什么
    秋梦
    感谢你走进我的生命里
    漂流有感
    QQ在跳舞
    青春无痕
    名人只是传说,你我才是传奇
    祝福紫秋
    可以用在任何人身上:百战百胜人生10大成功秘诀
    c#发送邮件
  • 原文地址:https://www.cnblogs.com/kxzh/p/10920031.html
Copyright © 2011-2022 走看看