• 快速排序C语言实现


    # include <stdio.h>
    
    int FindPos(int * a, int low, int high);
    void QuickSort(int * a, int low, int high);
    
    int main(void)
    {
        int a[6] = {-2, 1, 0, -985, 4, -93};
        int i;
    
        QuickSort(a, 0, 5); //第二个参数表示第一个元素的下标  第三个参数表示最后一个元素的下标
        
        for (i=0; i<6; ++i)
            printf("%d  ", a[i]);
        printf("
    ");
    
        return 0;
    }
    
    void QuickSort(int * a, int low, int high)
    {
        int pos;
    
        if (low < high)
        {
            pos = FindPos(a, low, high);
            QuickSort(a, low, pos-1);
            QuickSort(a, pos+1, high);
        }    
    }
    
    int FindPos(int * a, int low, int high)
    {
        int val = a[low];
    
        while (low < high)
        {
            while (low<high  && a[high]>=val)
                --high;
            a[low] = a[high];
    
            while (low<high && a[low]<=val)
                ++low;
            a[high] = a[low];
        }//终止while循环之后low和high一定是相等的
    
        a[low] = val; 
    
        return high; //high可以改为low, 但不能改为val 也不能改为a[low]  也不能改为a[high]
    }
  • 相关阅读:
    17.10.13
    17.10.12
    17.10.11
    17.10.10
    17.10.05
    17.10.04
    17.10.03
    17.10.02
    17.10.01
    17.9.29
  • 原文地址:https://www.cnblogs.com/zhujialei123/p/9629987.html
Copyright © 2020-2023  润新知