zoukankan      html  css  js  c++  java
  • 插入算法

    一、选择排序

    //选择排序  O(n^2)
    void selectSort(int arr[],int n)
    {
        for(int i = 0;i < n; i++){
            int minIndex = i;
            //寻找 [i,n]的最小值
            for(int j = i + 1; j < n; j++){
                if(arr[j] < arr[minIndex])
                {
                    minIndex = j;
                }
            }
            
            swap(arr[i],arr[minIndex]);
        }
        
    }

    二、插入排序

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    
    /**
    * 插入排序:类似打扑克
    **/
    template<typename T>
    void insertSort(T arr[],int n){
        
        for(int i = 1; i < n ; i++){
            //优化:先找到插入的位置,再交换
            int j;
            T e = arr[i];
            for(j = i; i > 0 && (e < arr[j-1]);j--){
                arr[j] = arr[j-1];
            }
            swap(arr[j],e);
        }
        
    }
    int main() {
        int a[10] = {10,9,8,7,6,5,4,3,2,1};
        insertSort(a[10],10);
        for(int i = 0;i < 10;i++){
            cout << a[i] << endl;
        }
        
        return 0;
    }

    三、关于O(n^2)层次算法的一些思考

    • 为什么要学习O(n^2)层次的算法,因为在某些场景下,如果数量级不多的话,时间可以忽略,但是代码实现较为简单
    • 可以作为其他算法中的基础
    • 对于几乎有序的程序插入算法会很有效
  • 相关阅读:
    lambda函数用法
    Appium基础篇-元素定位
    python生成测试报告
    jmeter 设置中文
    jmeter bin下常用目录
    高效求幂运算
    欧几里德算法(求最大公因数)
    二分查找
    最大子序列和问题
    秋游小记
  • 原文地址:https://www.cnblogs.com/juanzhi/p/12307469.html
Copyright © 2011-2022 走看看