zoukankan      html  css  js  c++  java
  • Insertion Sort

    class InsertionSort {
    
    public:
    
        void sort(int * arr, int size);
    
    };
    
    
    #include "InsertionSort.h"
    
    
    /**
     * 本质上是遍历每个元素,和数组前部的有序部分进行一一比较,找到合适的位置,进行插入
     * 所以这里有两部分逻辑,一是,寻找合适的位置,二是,进行插入,插入意味着,需要把部分元素往后推
     * 可以想见,最后会把大的元素都有序的推到数组后部
     * @param arr
     * @param size
     */
    void InsertionSort::sort(int *arr, int size) {
        if (size <= 1){
            return;
        }
    
        for (int i = 1; i < size; ++i) {
            //这里有另一种比较顺序,是从i-1开始,往前,这样如果if条件成绩就直接交换元素,类似反向的冒泡
            // (冒泡,每次需要比较的元素会越来越少,插入算法,则是每次需要比较的元素越来越多,这是因为冒泡进行的是全局排序,插入进行的是局部排序)
    
    
            int compareValue = arr[i];
            int j = i -1 ;
            for (; j >= 0; --j) {
                //
                if (compareValue < arr[j]){
                    arr[j + 1] = arr[j];
    
                } else {
                    break;
                }
            }
            arr[j + 1] = compareValue;
        }
    
    }
    
    
    
    
  • 相关阅读:
    是什么阻止你达成人生的目标?
    安装cocoa pods
    Mac安装mysql
    Mac安装jee开发环境,webservice环境搭建
    Mac使用Github
    从一个app开始学iOS
    Macbook Pro开机黑屏了。
    U盘安装OSX
    数据分析有时候的结果并不令人满意
    vmvare fusion 8
  • 原文地址:https://www.cnblogs.com/IC1101/p/13609386.html
Copyright © 2011-2022 走看看