算法 – 插入排序(C)

算法 – 插入排序(C)分享一个大牛的人工智能教程 零基础 通俗易懂 风趣幽默 希望你也加入到人工智能的队伍中来 请点击 http www captainbed net 直接插入排序 straightinse 的做法是 每次从无序表中取出第一个元素 把它插入到有序表的合适位置使有序表仍然有序 直至无序表中所有元素插入完为止 第一趟扫描前两个数 然后把第二个数按大小

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

/* * 直接插入排序(straight insertion sort)的做法是: * 每次从无序表中取出第一个元素,把它插入到有序表的合适位置使有序表仍然有序,直至无序表中所有元素插入完为止。 * 第一趟扫描前两个数,然后把第二个数按大小顺序插入到有序表中; * 第二趟把第三个数与前两个数从前向后扫描,把第三个数按大小插入到有序表中; * 依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 * * 直接插入排序属于稳定的排序,最坏时间复杂度为O(n^2),空间复杂度为O(1)。 * * 直接插入排序是由两层嵌套循环组成的。 * 外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置。 * 直接插入排序是将待比较的数值与它的前一数值进行比较,所以外层循环是从第二个数值开始的。 * 当前一数值比待比较数值大的情况下后移该数值并继续循环比较, * 直到找到比待比较数值小的并将待比较数值插入其后一位置,结束该次循环。 * 值得注意的是,我们必需用一个存储空间来保存当前待比较的数值, * 因为当一趟比较完成时,我们要将待比较数值插入比它小的数值的后一位置。 * 插入排序类似于玩纸牌时整理手中纸牌的过程。 */ namespace InsertionSort { using System; ///  /// The program. ///  public static class Program { ///  /// The main. ///  public static void Main() { int[] a = {1, 4, 6, 2, 8, 7, 9, 3, 5, 10}; Console.WriteLine("Before Insertion Sort:"); foreach (int i in a) { Console.Write(i + " "); } Console.WriteLine("\r\n\r\nIn Insertion Sort:"); InsertionSort(a); Console.WriteLine("\r\nAfter Insertion Sort:"); foreach (int i in a) { Console.Write(i + " "); } } ///  /// The insertion sort. ///  ///  /// The a. /// public static void InsertionSort(int[] a) { // 从第二个元素开始迭代。 for (int i = 1; i < a.Length; i++) { // 存储待插入的元素。 int tmp = a[i]; int j = i - 1; // 从当前元素右边寻找插入点。 while (a[j] > tmp) { // 后移。 a[j + 1] = a[j]; j--; if (j == -1) { break; } } // 该后移的元素已经后移了,会留下一个空位置,这个位置就是待插入元素的插入点。 a[j + 1] = tmp; // 打印数组。 foreach (int k in a) { Console.Write(k + " "); } Console.WriteLine(string.Empty); } } } } // Output: /* Before Insertion Sort: 1 4 6 2 8 7 9 3 5 10 In Insertion Sort: 1 4 6 2 8 7 9 3 5 10 1 4 6 2 8 7 9 3 5 10 1 2 4 6 8 7 9 3 5 10 1 2 4 6 8 7 9 3 5 10 1 2 4 6 7 8 9 3 5 10 1 2 4 6 7 8 9 3 5 10 1 2 3 4 6 7 8 9 5 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 After Insertion Sort: 1 2 3 4 5 6 7 8 9 10 */

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218990.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午11:02
下一篇 2026年3月17日 下午11:03


相关推荐

  • 正态分布方差推导_均匀分布的期望和方差公式

    正态分布方差推导_均匀分布的期望和方差公式概论:一维随机变量期望与方差二维随机变量期望与方差协方差1.一维随机变量期望与方差:公式:离散型:E(X)=∑i=1->nXiPiY=g(x)E(Y)=∑i=1->ng(x)Pi连续型:E(X)=∫-∞->+∞xf(x)dxY=g(x)E(Y)=∫-∞->+∞g(x)f(x)dx方差:D(x)=E(x²)-E²(x)标准差:根号下的方差常用分布的数学期望和方差:0~1分布…

    2026年1月14日
    8
  • M语言编程_所有编程语言大全

    M语言编程_所有编程语言大全一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言)。那就先从最简单的开始:解释执行器。一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮、智能提示等,不过还没

    2022年8月4日
    17
  • Agent-Skills 使用技巧

    Agent-Skills 使用技巧

    2026年3月15日
    6
  • idea构建springboot_钉钉的使用方法和技巧

    idea构建springboot_钉钉的使用方法和技巧随着技术框架的不断更新,一些公司摒弃了原先的技术框架模式。而springboot慢慢取代了原有的ssm框架开发。为什么选择springboot呢?配置简单不需要编写太多的xml; 基于spring构建,容易上手; 独立运行不依赖于容器; 内置服务器tomcat不需要打war包; 提供maven极简配置; 对于各种框架有很好的集成; 为SpringCloud微服务奠定基础,使微服务构建变得简单;下面让我们使用idea一起搭建完整版的SpringBoot项目:一.创建SpringBoot项

    2025年8月29日
    10
  • Ubuntu16.04 环境 Kubeedge安装「建议收藏」

    Ubuntu16.04 环境 Kubeedge安装「建议收藏」前期准备换源#备份sudocp/etc/apt/sources.list/etc/apt/sources.list.bak#更新sources.listsudotee/etc/apt/sources.list<<-‘EOF’debhttp://mirrors.aliyun.com/ubuntu/xenialmaindeb-srchttp://mirrors.aliyun.com/ubuntu/xenialmaindebhttp://mirr

    2022年7月21日
    21
  • java百分比或带百分号的数字转成double或Bigdecimal格式[通俗易懂]

    java百分比或带百分号的数字转成double或Bigdecimal格式[通俗易懂]java百分比或带百分号的数字转成double或Bigdecimal格式

    2022年4月23日
    349

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号