zoukankan      html  css  js  c++  java
  • 排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现

    以前也看过很多排序算法的原理,每次都想自己实现一下,一直都再拖,现在着牛课网学习算法课程,希望自己能够坚持练习。

    //对于一个int数组,请编写一个选择冒泡算法,对数组元素排序。
    //给定一个int数组A及数组的大小n,请返回排序后的数组。
    //测试样例:
    //[1, 2, 3, 5, 2, 3], 6
    //[1, 2, 2, 3, 3, 5]
    
    
    #include <iostream> 
    using namespace std;
    #include<string>
    
    
    
    void printResult(string str,int* A,int n)
    {
        cout << str << "的结果:
    ";
        for (int i = 0; i < n; i++)
        {
            cout << A[i] <<" ";
        }
        cout << endl;
    }
    
    void swap(int a, int b)
    {
        int temp=a;
        a = b;
        b = a;
    }
    
    class BubbleSort {
    public:
        int* bubbleSort(int* A, int n) {
            // write code here
            for (int i = 0; i<n; i++)
            {
                for (int j = 0; j<n - i - 1; j++)
                {
                    if (A[j]>A[j + 1])
                    {
                        int temp = A[j];
                        A[j] = A[j + 1];
                        A[j + 1] = temp;
                    }
                }
            }
            return A;
        }
    };
    
    
    //请编写一个选择排序算法
    class SelectionSort {
    public:
        int* selectionSort(int* A, int n) {
            // write code here
            int k = 0;
            for (int i = 0; i < n-1; i++)
            {
                k = i;
                for (int j = i; j < n; j++)
                {
                    if (A[k]>A[j])
                    {
                        k = j;
                    }
                }
                if (k!=i)
                {
                    int temp = A[i];
                    A[i] = A[k];
                    A[k] = temp;
                }
            }
            return A;
        }
    };
    
    //请编写一个选择插入算法
    
    class InsertionSort
    {
    public:
        int* insertionSort(int* A, int n)
        {
            for (int i = 1; i < n; i++)
            {
                int temp = A[i];
                int j = i - 1;
                for (; j >= 0;j--)   //j前面的已经排好序,从后面往前比较,当没有比当前值大的时候bereak;
                {
                    if (A[j]>temp)
                    {
                        A[j + 1] = A[j];
                    }
                    else
                    {
                        break;
                    }
                }
                A[j + 1] = temp;
            }
            return A;
        }
    };
    
    
    int main()
    {
    
        int N = 0;
        cout << "排序数据个数:
    ";
        cin >> N;
        int* A = new int[N];
        cout << "请输入待排序的数据:
    ";
        for (int i = 0; i < N; i++)
        {
            cin >> A[i];
        }
    
        BubbleSort bubble;
        bubble.bubbleSort(A,N);
        printResult("bubbleSort", A, N);
    
        SelectionSort select;
        select.selectionSort(A, N);
        printResult("selectSort", A, N);
    
        InsertionSort insert;
        insert.insertionSort(A, N);
        printResult("InsetSort", A, N);
    
    
        return 0;
    }

    持续更新中......

  • 相关阅读:
    nohup
    wonder vscode plugins
    myhome vscode plugins
    virtural machine eth1
    单片机电子时钟的设计(期末课程设计)
    解决Eclipse中更改HTML页面后,浏览器查看页面无变化
    ASP.NET 中的 Session对象
    windows下mysql数据库导入导出
    TP5.1分表,partition分表实例,根据自增主键水平分表
    PHP操作mysql数据库分表的方法
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5907006.html
Copyright © 2011-2022 走看看