zoukankan      html  css  js  c++  java
  • 数据结构排序-直接插入排序

    每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

    第一趟比较前两个数,然后把第二个数按大小插入到有序表中;

    第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;

    依次进行n-1趟扫描后就完成了整个排序过程

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int n;
     5 
     6 /*
     7  * 直接插入排序
     8  */
     9 void InsertSort(int *array)
    10 {
    11     int i, j;
    12     for (i = 2; i <= n; i++)
    13     {
    14         if (array[i] < array[i - 1])
    15         {
    16             array[0] = array[i];
    17             array[i] = array[i - 1];
    18             for (j = i - 2; array[0] < array[j]; j--)
    19             {
    20                 array[j + 1] = array[j];
    21             }
    22             array[j + 1] = array[0];
    23         }
    24     }
    25 }
    26 
    27 int main()
    28 {
    29     int i;
    30     int *array;
    31     printf("请输入数组的大小:");
    32     scanf("%d", &n);
    33     array = (int*) malloc(sizeof(int) * (n + 1));
    34     printf("请输入数据(用空格分隔):");
    35     for (i = 1; i <= n; i++)
    36     {
    37         scanf("%d", &array[i]);
    38     }
    39     InsertSort(array);
    40     printf("排序后为:");
    41     for (i = 1; i <= n; i++)
    42     {
    43         printf("%d ", array[i]);
    44     }
    45     printf("
    ");
    46 }
  • 相关阅读:
    找零问题-完全背包
    可同时在nodejs和浏览器端使用的websocket
    C++ vector 比较大小
    npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> 解决办法
    C/C++宏定义中#与##区别
    解析日志工具。
    3
    2
    dssfsfsfs
    android获取USB设备的名称
  • 原文地址:https://www.cnblogs.com/niceforbear/p/4534446.html
Copyright © 2011-2022 走看看