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 }
  • 相关阅读:
    阿里安全称发现安卓WiFi漏洞:黑客可远程攻击
    Android Art Hook 技术方案
    java 静态代码块执行顺序
    sqlzoo易错题
    Centos7安装配置Nginx_笔记
    System.Runtime.Caching中MemoryCache帮助类
    youtube-dl工具的使用
    C#程序员快速上手Angular开发
    npm常见配置收集
    Resharp常用设置收集整理
  • 原文地址:https://www.cnblogs.com/gogly/p/2740056.html
Copyright © 2011-2022 走看看