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

    快排的几个基本要点:

    1 找基准值,这里需要说明的是一般选取数组的首地址元素作为基准值 所以在进行函数调用时要去从第二个取起;

    2 用基准值把数据分为三块,一块为小于基准值的,另一块为大于基准值的,而中间的那个 部分则作为基准值的移动数据(或者是比较数据)直到分成三块(第二块只有基准值);

    3 实现上面的部分只是完成了第一次的分配,然后把除基准值的两部分分别重新调用函数 4 这就是所谓的快排!!!

    #include<iostream>
    #define N 11
    using namespace std;
    int main()
    {
        void QuickSort(int [],int ,int );
        int a[N];
        for(int i=1;i<N;i++)
        cin>>a[i];
     
        QuickSort(a,1,N-1);
        for(int i=1;i<N;i++)
        cout<<a[i]<<" ";
        return 0;
    }
    void QuickSort(int s[],int start,int end)
    {
        int i,j;
        i=start;
        j=end;
        s[0]=s[start];//设定基准值
        while(i<j)
    {
        while(i<j&&s[0]<s[j])
        j--;//位置左移
        if(i<j)//凡是满足上述条件进行位置调换;
        {
            s[i]=s[j];
            i++;
        }
         while(i<j&&s[i]<=s[0])
         i++;
         if(i<j)
         {
             s[j]=s[i];
             j--;
         }
    }
        s[i]=s[0];//确定基准值得位置
        if(i>start)
        QuickSort(s,start,j-1);
        if(i<end)
        QuickSort(s,j+1,end);
    }
  • 相关阅读:
    java集合:ArrayList(1)
    java虚拟机:堆内存
    计算机三种编码与加减运算
    java虚拟机:程序计数器
    java虚拟机:JIT编译器
    java虚拟机:运行时常量池
    java虚拟机:方法区
    java虚拟机:本地方法栈
    java虚拟机:class文件结构
    linux安装mysql
  • 原文地址:https://www.cnblogs.com/yaobolove/p/4108080.html
Copyright © 2011-2022 走看看