zoukankan      html  css  js  c++  java
  • C_数据结构_快速排序

    # include <stdio.h>
    
    void QuickSort(int * a, int low, int high);
    int FindPos(int * a, int low, int high);
    
    int main(void)
    {
        int a[6] = {2, 1, 0, 5, 8, 3};
        int i;
    
        QuickSort(a, 0, 5); //第二个参数表示第一个元素的下标,第三个参数表示最后一个元素的下标,表示把a[0]-a[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 low; //high可以改为low,但不能改为val,也不能改为a[low]和a[high]
    } 
  • 相关阅读:
    oo第二次总结
    oo第一次总结
    OO最后一次博客儿
    OO作业总结第三弹
    OO作业总结第二弹
    初学面向对象
    hi🎈
    散列函数及其应用
    结对项目作业
    构建之法第四,第十四章读书有感 (另补第十七章)
  • 原文地址:https://www.cnblogs.com/LXL616/p/10661639.html
Copyright © 2011-2022 走看看