zoukankan      html  css  js  c++  java
  • 排序算法 C++代码实现

    插入排序:

    就像摸牌,摸一张插进去,找一个哨兵。从第二个開始,和前一个比較。小的话前移一位。

    #include <iostream>
    #include<stdlib.h>
    
    using namespace std;
    #define N 4   //不能加分号结束
    
    class sort
    {
    public:
        void insertSort(int a[],int n);
        sort()
        {
            cout<<"Start"<<endl;
        }
        sort(const sort&s);
    private:
    
    };
    void sort::insertSort(int a[],int n)
    {
        int i=1,j=0,key;//设两个变量值的目的是内外变化。假设仅仅有一个内外的变化会产生影响
        while(i<n)    //外循环
        {
            key=a[i];//把第几个拿出来。和前边的对照;
            j=i-1;   //前边的那个值
            while(key<a[j]&&j>=0)  //内循环
            {
                a[j+1]=a[j];   //把当前值改成前一个值
                j--;          //位置前移一位
            }
            a[j+1]=key;      //比較成功之后。把哨兵插到当前位置,注意用的是j
            i++;   //转到下次循环
        }
        cout<<"-----------
     ";
        for(int i=0;i<n;i++)
        {
            cout<<a[i];
        }
    }
    sort::sort(const sort&s)
    {
        cout<<"news
    ";
    }
    int main()
    {
        sort s;
        //sort b=s;
        int a[N];
        cout<<"lease input arr.";
        for(int i=0;i<N;i++)
        {
            cin>>a[i];
        }
        cout<<"shuchu wei";
        for(int i=0;i<N;i++)
        {
            cout<<a[i]<<endl;
        }
        s.insertSort(a,N);
    
        return 0;
    };
    </pre><p><span style="font-family:SimHei; font-size:24px">冒泡排序:</span></p><p><span style="font-family:SimHei"></span></p><pre name="code" class="html"><span style="font-size:14px;">#include <iostream>
    #include<stdlib.h>
    
    using namespace std;
    #define N 4   //不能加分号结束
    
    class sort
    {
    public:
        void insertSort(int a[],int n);
        sort()
        {
            cout<<"Start"<<endl;
        }
        sort(const sort&s);
        void bubblesort(int a[],int n);
    private:
        int c;
    };
    void sort::insertSort(int a[],int n)
    {
        int i=1,j=0,key;//设两个变量值的目的是内外变化,假设仅仅有一个内外的变化会产生影响
        while(i<n)    //外循环
        {
            key=a[i];//把第几个拿出来。和前边的对照。
            j=i-1;   //前边的那个值
            while(key<a[j]&&j>=0)  //内循环
            {
                a[j+1]=a[j];   //把当前值改成前一个值
                j--;          //位置前移一位
            }
            a[j+1]=key;      //比較成功之后,把哨兵插到当前位置,注意用的是j
            i++;   //转到下次循环
        }
        cout<<"-----insertsort------
     ";
        for(int i=0;i<n;i++)
        {
            cout<<a[i];
        }
        cout<<endl;
    }
    void sort::bubblesort(int a[],int n)
    {
        int i=0,j=n;
        for(;i<n-1;i++)//外层循环
        {
            for(;j>i;j--)//内层循环,从最后一个開始向上冒泡。冒泡次数逐渐减一
            {
                if(a[j]<a[j-1])//倒数開始,两个数进行比較,下边是交换过程
                {
                    int temp=a[j-1];
                    a[j-1]=a[j];
                    a[j]=temp;
                }
            }
        }
        cout<<"-----bubblesort------
     ";
        for(int i=0;i<n;i++)
        {
            cout<<a[i];
        }
        cout<<endl;
    }
    sort::sort(const sort&s)
    {
        cout<<"news
    ";
    }
    int main()
    {
        sort s;
        //sort b=s;
        int a[N];
        cout<<"lease input arr.";
    
        for(int i=0;i<N;i++)
        {
            cin>>a[i];
        }
        cout<<"shuchu wei";
        for(int i=0;i<N;i++)
        {
            cout<<a[i];
        }
        cout<<endl;
    
        s.insertSort(a,N);
        s.bubblesort(a,N);
    
        return 0;
    };</span><span style="font-size:24px;">
    </span>



    其它算法待续....


  • 相关阅读:
    【算法】动态规划
    【设计模式】单例模式
    Python 多元线性回归
    Python 线性回归
    惩罚项
    局部常数拟合方法 例
    微分方程是用来做什么的?
    线性回归与梯度下降法
    k近邻法
    逻辑回归与梯度下降法
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7267526.html
Copyright © 2011-2022 走看看