当前位置: 首页 > news >正文

C 数据结构与算法系列 插入排序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

参照 实验楼 插入排序代码

它的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程,如下图所 示。

12115504_lgMx.gif

下附实验代码

#include <stdio.h>
#include <stdlib.h>

int n;

/*
 * 直接插入排序(头几遍可能会晕 拿张纸画画就懂了 回头再看几遍确保理解透彻)
 */
void InsertSort(int *array)
{
    int i, j;
    for (i = 2; i <= n; i++)
    {
        if (array[i] < array[i - 1])
        {
            array[0] = array[i];
            array[i] = array[i - 1];
            for (j = i - 2; array[0] < array[j]; j--)
            {
                array[j + 1] = array[j];
            }
            array[j + 1] = array[0];
        }
    }
}

int main()
{
    int i;
    int *array;
    printf("Please enter the length of arr:\n");
    scanf("%d", &n);
    array = (int*) malloc(sizeof(int) * (n + 1));
    printf("Please enter each element(seperate by space):");
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &array[i]);
    }

    InsertSort(array);
    printf("sorted array:");
    for (i = 1; i <= n; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
}


转载于:https://my.oschina.net/u/2241804/blog/657249

相关文章:

  • spring-001-Ioc 顶层容器
  • Android自动化测试之Monkeyrunner使用方法及实例
  • 【案例】slave_net_timeout 问题一则
  • Node+Express+node-mysql 实战于演习 全套mysql(增删改查)
  • 我与mongodb 二三事(2)
  • 失眠的症状是什么
  • 20145222黄亚奇《Java程序设计》实验二实验报告
  • TaskCompletionSource的使用场景
  • Nginx负载均衡配置实例详解(转)
  • H5页面快速搭建之高级字体应用实践
  • 技能的释放与CD
  • 数据仓库专题(6)-数据仓库、主题域、主题概念与定义
  • 实现滑动分页(微博分页方式)
  • MySQL 读写分离介绍及搭建
  • corosync + pacemaker + nfs 构建高可用mysql集群
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 2017年终总结、随想
  • Angular 4.x 动态创建组件
  • C语言笔记(第一章:C语言编程)
  • HTTP--网络协议分层,http历史(二)
  • javascript数组去重/查找/插入/删除
  • Java反射-动态类加载和重新加载
  • Java小白进阶笔记(3)-初级面向对象
  • JS字符串转数字方法总结
  • Python学习之路16-使用API
  • Redis的resp协议
  • TCP拥塞控制
  • uni-app项目数字滚动
  • v-if和v-for连用出现的问题
  • vue-loader 源码解析系列之 selector
  • 关于Flux,Vuex,Redux的思考
  • 简单易用的leetcode开发测试工具(npm)
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 试着探索高并发下的系统架构面貌
  • 线上 python http server profile 实践
  • 原生JS动态加载JS、CSS文件及代码脚本
  • Linux权限管理(week1_day5)--技术流ken
  • python最赚钱的4个方向,你最心动的是哪个?
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​ArcGIS Pro 如何批量删除字段
  • ​业务双活的数据切换思路设计(下)
  • # 透过事物看本质的能力怎么培养?
  • #《AI中文版》V3 第 1 章 概述
  • (C语言)二分查找 超详细
  • (TOJ2804)Even? Odd?
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (顺序)容器的好伴侣 --- 容器适配器
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET NPOI导出Excel详解
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题