zoukankan      html  css  js  c++  java
  • 交换排序(快速排序重点)

    1.冒泡排序

    从后往前,比较两个数的大小,交换位置

    //冒泡排序
    #include<iostream>
    using namespace std;
    void bubble_sort(int a[],int start,int end){
        int i,j,tmp;
        for(i=start;i<=end-2;i++){
            for(j=end-1;j>=i+1;j--)
            if(a[j]<a[j-1]) {
                tmp=a[j];
                a[j]=a[j-1];
                a[j-1]=tmp;
            } 
        }
    }
    int main()
    {
        int n;
        cin>>n;
        int a[n];
        for(int i=0;i<n;i++)  cin>>a[i];
        bubble_sort(a,0,n);
        for(int i=0;i<n;i++) cout<<a[i]<<" ";
    } 
    View Code

    2.快速排序

    快速排序主要是应用了分治策略

    a.遍历整个数组,将数组分为两个部分 paritition(int arr[],int start,int end) 

    b.对分好的部分进行再分

    //快排
    #include<iostream>
    using namespace std;
    //遍历整个数组,二分元素 
    int partition(int a[],int start,int end){//基准新位置 
        int i=start;
        int j=end-1;
        int tmp=a[i];
        while(i<j){//i=j时候退出 
            while(i<j&&a[j]>=tmp) j--; //找到小于基准的位置 
            a[i]=a[j];//将j元素放到基准的位置 
            while(i<j&&a[i]<=tmp) i++;//找到大于基准的位置 
            a[j]=a[i];//将位置放到小于基准的位置处 
        } 
        a[j]=tmp;//i j想等的位置放基准 
        return i;
    }
    
    void qsort(int a[],int start,int end){//对二分的部分继续二分 
        if(start<end-1){
            int tmp=partition(a,start,end);
            qsort(a,start,tmp);
            qsort(a,tmp+1,end);
        }
    } 
    int main()
    {
        int n;
        cin>>n;
        int a[n];
        for(int i=0;i<n;i++)  cin>>a[i];
        qsort(a,0,n);
        for(int i=0;i<n;i++) cout<<a[i]<<" ";
    }
    View Code

     练习了一下

    #include<iostream>
    using namespace std;
    int arr[10010];
    int partition(int start,int end){
        int tmp=arr[start];
        int i=start;
        int j=end;
        while(i<j){
            while(i<j&&arr[j]>=tmp) j--;
            arr[i]=arr[j];
            while(i<j&&arr[i]<=tmp) i++;
            arr[j]=arr[i];
        }
        arr[i]=tmp;
        return i;
    }
    void qsort(int start,int end){
        if(start<end){
            int t=partition(start,end);
    //        partition(start,t);
    //        partition(t+1,end);
    qsort(start,t);
    qsort(t+1,end);
        }
    }
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        cin>>arr[i];
        qsort(0,n-1);
        for(int i=0;i<n;i++)
        cout<<arr[i]<<" ";
    } 
    View Code
  • 相关阅读:
    WCF自定义消息编码器 part 2 from MSDN
    EYQiPa,梦开始的地方
    WCF负载平衡 from MSDN
    WCF安全体系结构 from MSDN
    Introduction to Locking in SQL Server z
    WCF 性能计数器 from MSDN
    关于EYQiPa 持续更新
    12 个免费在线的 Web 网站性能测试工具 转
    使用FileSystemWatcher监控目录 z
    IIS相关
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10462971.html
Copyright © 2011-2022 走看看