• 交换排序(快速排序重点)


    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
  • 相关阅读:
    二分查找和线性查找(二)
    自定义数组java(一)
    MATLAB中load和imread的读取方式区别
    图像Demosaic算法及其matlab实现
    Matlab GUI学习总结
    matlab gui matlab gui 鼠标点击显示图像颜色值
    【图像处理】RGB Bayer Color分析
    MATLAB图像处理_Bayer图像处理 & RGB Bayer Color分析
    IPC图像处理项目流程图
    matlab图像处理程序大集合
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10462971.html
Copyright © 2020-2023  润新知