zoukankan      html  css  js  c++  java
  • 直接插入排序

    思路:

    对某一个元素,假设该元素前面都已经有序,元素后面元素都无序。

    找到恰小于等于该元素的位置后插入该元素,同时此时该元素位置到之前该元素之间的元素位置都后移。

    空间复杂度:O(1)

    时间复杂度:O(n²)

    是稳定的排序方法

    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h> 
    #include <algorithm>
    using namespace std;
    int A[1000]={0,49,38,65,97,76,13,27,49,55,4};
    void InsertSort(int n){//n为数组大小 (从小到大)
        int i,j;
        for(i=2;i<=n;i++){//      假定i之前的数据已经排好序 
            if(A[i]<A[i-1]){//    后一项比前一项小,则需要交换 
                A[0]=A[i];         //记录当前元素到A0 
                for(j=i-1;A[0]<A[j];j--){          //把当前元素插入到恰好小于等于该元素后 
                    A[j+1]=A[j];                   //从后往前移动 
                }
                A[j+1]=A[0];                       // 恰好小于等于该元素后插入该元素 
            }
        }
    } 
    int main(){
        InsertSort(10);
        for(int i=1;i<=10;i++){
            cout<<A[i]<<" ";
        }
        return 0;
    }
  • 相关阅读:
    包 (package)
    Object类
    异常
    接口
    抽象类
    多态(经典案例)
    三大特性:(经典代码)
    对象创建的过程(重点理解)
    final关键字
    cocos2dx工程中接入支付宝sdk
  • 原文地址:https://www.cnblogs.com/xusi/p/13275599.html
Copyright © 2011-2022 走看看