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

    //  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;
    
    }
    

      

  • 相关阅读:
    JavaScript闭包 懂不懂由你反正我是懂了
    浅析对象访问属性的"."和"[]"方法区别
    PHP:6种GET和POST请求发送方法
    ArcThemALL!5.1:解压、脱壳、压缩样样精通
    nw.exe开发DEMO下载
    解析Javascript事件冒泡机制
    node.js之fs模块
    Node.js读取文件内容
    php-编译模块1
    jenkins--使用命令行自动启动Jenkins的job
  • 原文地址:https://www.cnblogs.com/jasonxu19900827/p/5895252.html
Copyright © 2011-2022 走看看