zoukankan      html  css  js  c++  java
  • C语言练习之 插入排序(一)

      排序算法,是编程中经常使用的算法,我经常听说的有冒泡排序、插入排序、希尔排序、选择排序等等

    由于笔者并非计算机专业科班出身,加上天资一般,当时学习的时候,真是头疼不已,那时候很多上说的也

    不是特别清楚,后来搞明白了之后,时间一长,又忘了(哈哈)。所以总结一下,需要用时直接到博客园上

    面去复制。

      今天就说一下插入排序:插入排序的核心思想是:从头开始,每次头元素作为 “哨兵” 依次和后面的元素

    进行比较,(假设从小到大排列)后面大的元素和“哨兵”比较,如果后面的元素比“哨兵”大则交换,每比较一

    次,都会从比较位置,向首元素方向进行,因此,该排序算法效率并不高,时间复杂度为O(n2)

    #include <stdio.h>
    
    #define SWAP(X,Y) X=X+Y;Y=X-Y;X=X-Y
    
    //按最坏的时间复杂度
    int main(int argc, char *argv) {
        int a[10] = {10,9,8,7,6,5,4,3,2,1};
        for (int i = 1; i < 10; i++) {
            int j = i;
            while ((j > 0) && a[j] < a[j - 1])
            {
                SWAP(a[j], a[j - 1]);
                j -= 1;
            }
        }
    
        for (int i = 0; i < 10; i++) {
            printf("%d ",a[i]);
        }
        printf("
    ");
    }

    程序在vs2015控制台上运行如下:

  • 相关阅读:
    WPF--常用布局介绍
    NUGET常用命令
    WPF 3D变换应用
    WPF MeshGeometry3D
    一组西门子S7 报文
    西门子与三菱PLC报文比较
    西门子S7报文解析
    C#与西门子PLC通讯
    Django之model admin自定义后台管理
    django ajax
  • 原文地址:https://www.cnblogs.com/xuelanga000/p/11307569.html
Copyright © 2011-2022 走看看