• 插入排序


    //  main.cpp
    
    //  insertSort
    
    //  Created by Jason on 16/9/20.
    
    //  Copyright © 2016年 Jason. All rights reserved. 
    
    #include <iostream>
    
    using namespace std;
    
    //下面代码作用:当需要C++ 和C 需要混和编译时,需要下面的宏定义
    
    //#ifndef MAX_H //防止重复引用
    
    //#define MAX_H
    
    //#ifdef __cplusplus //凡是C++的编译器都定义了该预编译宏,通过它来检测当前编译器是否使用的是C++编译器。
    
    //extern "C"{
    
    //#endif
    
    //    int max(int a,int b);
    
    //#ifdef __cplusplus
    
    //    }
    
    //#endif
    
    //#endif
    
     -----------------------------------------------------------------------------------------------------
    
    /**
    
     在一定的上下文环境中,指针和数组是等同的,并非所有情况下如此
    
     数组的定义并不等同于指针的外部声明(注意声明和定义的区别,定义是为一个变量或者对象分配内存空间,而声明只是描述类型)。
    
     **/
    
    //下面代码作用:返回数组元素的个数
    
    //当判断是字符串数组时,需要减一(beacuse 会多算个""字符(结束字符))
    
    //#define ARR_SIZE(array,len) (len = (sizeof(array) / sizeof(array[0])-1));
    
    //如何判断是否是字符串数组,我也没有找到办法,看到网上有人说使用KMP算法,下次研究下(int arr[] = {"abcdefg"})。
    
    ////sizeof 不是一个函数,而是单目运算符
    
     
    
    #define ARR_SIZE(array,len) (len = (sizeof(array) / sizeof(array[0])));
    
    //插入排序算法原理:
    
    //http://blog.csdn.net/left_la/article/details/8656425
    
    //时间复杂度是O(n^2);空间复杂度是O(1)
    
    void insertSort(int R[],int n)  //传递数组和数组元素个数  
    
    {
    
        int i ,j;
    
        int temp;
    
        for(i = 0;i<n;++i)
    
        {
    
            temp = R[i];
    
            j = i - 1;
    
            while(j>=0 && temp<R[j])
    
            {
    
                R[j+1] = R[j];
    
                --j;
    
            }
    
            R[j+1] = temp;
    
        }
    
    }
    
     
    
    int main(int argc, const char * argv[]) {
    
        
    
        int arr[] = {0,8,2,10,50,12,6,7,5,3};
    
        int len;
    
        ARR_SIZE(arr,len);
    
        insertSort(arr, len);
    
        for(int i=0;i<len;i++)
    
        {
    
            cout<<arr[i]<<" ";
    
        }
    
        cout<<endl;
    
    }
    

      

  • 相关阅读:
    【转】shell中的内建命令, 函数和外部命令
    clear out all variables without closing terminal
    linux中shell命令test用法和举例
    解决vim粘贴时格式混乱的问题
    scp的两种方式
    source 命令的用法,是在当前bash环境下执行脚本文件
    angularjs中下拉框select option默认值
    redux 及 相关插件 项目实战
    JavaScript 获取当前时间戳
    v-if v-else-if v-else
  • 原文地址:https://www.cnblogs.com/jasonxu19900827/p/5895252.html
Copyright © 2020-2023  润新知