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

    插入排序基本思想:将需要排序的数据分成有序区与无序区,默认的第一个有序区是第一个元素。然后依次排序不断扩大有序区,缩小无序区。通过将无序区第一个数据与有序区内数据比较,找到他的位置,然后将有序数据向后移动,将那个数据放到有序区的相应位置就可以了。知道比较到无序区的最后一个数据结束。

    但是由于每次比较需要移动大块数据,所以需要使用memmove来操作。

    View Code
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 typedef int DataType;
     5 void insert_snort(DataType data[],int lt,int rt)
     6 {
     7        int i,j,k;
     8        DataType key;
     9        for(i=lt+1;i<=rt;i++){
    10                 key = data[i];
    11                 j = i-1;
    12                 while(j>= lt && data[j] > key){
    13                                 data[j+1] = data[j];
    14                                 j--;
    15                 }
    16                 data[j+1] = key;
    17        }
    18 }
    19 
    20 void insert_snort_high(DataType data[],int lt,int rt)
    21 {
    22        int i,j,k;
    23        DataType key;
    24        for(i=lt+1;i<=rt;i++){
    25                 key = data[i];
    26                 j = i-1;
    27                 while(j>= lt && data[j] > key){
    28                                 j--;
    29                 }
    30                 memmove(data+j+2,data+j+1,(i-j-1)*sizeof(DataType));
    31                 data[j+1] = key;
    32        }
    33 }
    34 
    35 int main()
    36 {
    37         int i=0;
    38         int data[10]={2,6,8,4,9,3,5,1,7,12};
    39         insert_snort(data,0,9);
    40         for(i=0;i<10;i++){
    41                 printf("%d ",data[i]);
    42         }
    43         printf("\n");
    44         return 0;
    45 }
  • 相关阅读:
    C++访问WebService gSoap方式
    vc6
    POS 60域用法
    本次操作由于这台计算机的限制而被取消
    POS的一点杂笔
    QT5.5
    注册表常用快捷键
    WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
    js中的prototype属性
    WPF入门教程系列二十——ListView示例(二)
  • 原文地址:https://www.cnblogs.com/gogly/p/2740056.html
Copyright © 2011-2022 走看看