• 排序算法的实现(冒泡,选择,插入 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;
    }

    持续更新中......

  • 相关阅读:
    Hbase 0.98集群搭建的详细步骤
    java使用Apache POI操作excel文件
    linux下用非root用户重启导致ssh无法连接的问题
    solr update
    solr(一)
    libreoffice
    git
    hbase基本操作
    http://webapp.docx4java.org/OnlineDemo/PartsList.html
    git
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5907006.html
Copyright © 2020-2023  润新知