• 快排


    思想:每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
    基于二分思想的算法。

    测试用例:

    10

    8 6 2 4 1 9 7 5 10 3

    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h> 
    #include <algorithm>
    using namespace std;
    
    int n,m;
    int ans=99999999,num=0;
    bool vis[105];
    int dp[105][105],aa[105];
    void quicksort(int left,int right){
        int i,j,t,temp;
        if(left>right){
            return;
        }
        temp=aa[left];               //每一趟的基数 
        i=left;
        j=right;
        while(i!=j){
            while(aa[j]>=temp&&i<j) 
                j--;                                    // j 从右向左移  i从 左向右移  默认右边大 左边小 
            while(aa[i]<=temp&&i<j) 
                i++;                                    // i<j 避免移动过了 
            if(i<j){
                t=aa[i];aa[i]=aa[j];aa[j]=t;
            } 
        } 
        aa[left]=aa[i];                                 //此次 i=j 即是中间那个数
        aa[i]=temp;                                     //基数归位
        
        quicksort(left,i-1);                            //递归处理基数左边的部分 
        quicksort(i+1,right);                           //递归处理基数右边的部分 
    }
    int main() {
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>aa[i];
        } 
        quicksort(0,n-1); 
        for(int i=0;i<n;i++){
            cout<<aa[i]<<" ";
        } 
        return 0;
    }
  • 相关阅读:
    重回大一
    20071027我以为我很大度
    凌晨三点
    山洞爱情
    JQuery上传插件Uploadify使用详解
    jquery ui layout
    win2003下direct的问题
    Aptana一些快键用法
    IE、Firefox、Chrome 的JS代码兼容注意事项
    2011学习计划
  • 原文地址:https://www.cnblogs.com/xusi/p/12554055.html
Copyright © 2020-2023  润新知