【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 1952|回复: 0

[算法/加密解密] 插入排序之一 直接插入排序

[复制链接]
发表于 2013-8-8 13:55:37 | 显示全部楼层 |阅读模式
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。时间复杂度为O(n^2)理解:依次将每个待排序的记录插入到一个有序序列的合适位置。插入的位置是和有序序列的每一个元素进行比较,然后确定的。
  1. void CInsertionSort::StraightInsertion(void)
  2. {
  3.     //元素0是哨兵。
  4.     const int count = 9;
  5.     int L[count] = {0, 49, 38, 65, 97, 76, 13, 27, 49};
  6.     //对顺序表作直接插入排序。
  7.     for (int i = 2; i < count; i++)
  8.     {
  9.         if (L[i] < L[i - 1])
  10.         {
  11.             L[0] = L[i];
  12.             int j = i - 1;
  13.             do
  14.             {
  15.                 L[j + 1] = L[j];
  16.                 j--;
  17.             } while (L[0] < L[j]);
  18.             L[j + 1] = L[0];
  19.         }
  20.     }
  21.     //打印排序结果。
  22.     for (int i = 0; i < count; ++ i)
  23.     {
  24.         cout << L[i] << "\t";
  25.     }
  26.     cout << endl;
  27. }
复制代码
默认循环最初的有序序列只有一个元素。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 03:52

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表