zoukankan
html css js c++ java
插入排序之直接插入排序
直接插入排序
时间复杂度O(n^2)
附加空间O(1)
稳定排序
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; }; void InsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外 { for (int i = 2; i <= length; i++) { if (arr[i - 1].key > arr[i].key) { // 若判断时改为>=,则是不稳定排序,下同 arr[0] = arr[i]; arr[i] = arr[i - 1]; int j; for (j = i - 2; arr[j].key > arr[0].key; j--) arr[j + 1] = arr[j]; arr[j + 1] = arr[0]; } } } int main(void) { freopen("in.txt", "r", stdin); Record a[LEN + 1] = {0}; for (int i = 1; i <= LEN; i++) cin >> a[i].key >> a[i].otherinfo; InsertSort(a, LEN); for (int i = 1; i <= LEN; i++) cout << a[i].key << '\t' << a[i].otherinfo << endl; return 0; } /* in.txt: 49 1 38 0 65 0 97 0 76 0 13 0 27 0 49 2 out: 13 0 27 0 38 0 49 1 49 2 65 0 76 0 97 0 */
若排序的函数写成下面这样:
void InsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外 { for (int i = 2; i <= length; i++) { arr[0] = arr[i]; // 当当前比较的元素比前一个大时(前面的都已排好序),可直接continue,以免复制去又复制来 int j; for (j = i - 1; arr[j].key > arr[0].key; j--) arr[j + 1] = arr[j]; arr[j + 1] = arr[0]; } }
代码是简洁了些,但有些微妙的缺陷,如注释所示。
比如排
12 27
用第二种要浪费两次复制。
查看全文
相关阅读:
"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法 java程序员
Android巴士转发 java程序员
好记性不如烂笔头之 ——CP命令 java程序员
linux之移植内核linux2.6.32psp03.00.01.06 编译出错 java程序员
eoeAndroid社区转发 java程序员
id 与 class的区别
ASP+ACCESS转成ASP+SQL程序应如何修改
怎么样才能让层显示在FLASH之上呢
用Javascript作消息提示框(类似于QQ用户上线的消息提示)
改善用户体验之Alert提示效果
原文地址:https://www.cnblogs.com/jjtx/p/2533471.html
最新文章
地理信息系统比较牛的网站之可以了解专业前沿的地方
<转>Java 3D介绍
Java写的学生信息管理系统
权限设计中值得注意的几个小问题
安装Spark源代码
java取得网卡地址
c语言发送邮件
如何实现网页自动登录?或Java模拟Post表单
(转)DELL服务器 RAID 磁盘阵列配置图解
(转)哈佛体系结构
热门文章
FIFO(附Testbench)
OVL断言点滴(不断更新)
热烈祝贺驴子的技术博客开张
反应速度测试器中HOLD IP
(转) 如何使用SignalTap II觀察reg值与wire值?
实现单页面导航效果的jQuery插件 SMINT java程序员
ubuntu下交叉编译器的切换 java程序员
linux之交叉编译器4.3.3移植 java程序员
20个强大的jQuery翻书插件【 jQuery flipbook】 java程序员
30个高质量并且免费的Android图标【Android Icon素材】 java程序员
Copyright © 2011-2022 走看看