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
用第二种要浪费两次复制。
查看全文
相关阅读:
程序员优化程序流程
iOS开发优化的25个方案
彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题转
svn服务器搭建与配置
mac 显示隐藏文件夹
HDU 2276 Kiki & Little Kiki 2 矩阵构造
HDU 3306 Another kind of Fibonacci ---构造矩阵***
HDU 1575 Tr A----矩阵相乘题。
矩阵的模板----
HDU 1757 矩阵求第n的递推式
原文地址:https://www.cnblogs.com/jjtx/p/2533471.html
最新文章
charles(3)-charles怎么过滤指定ip地址
性能测试分布式压测(6)-分布式压测理论知识学习
性能测试分布式压测(5)-为什么jmeter 分布式测试,一定要设置 java.rmi.server.hostname
性能测试分布式压测(4)-linux环境下no-gui分布式压测过程遇到的问题及解决方案
jenkins(7)-jenkins构建触发器 定时构建
jenkins(6)-linux环境下jenkins集成ant构建时报错如下:ERROR: command execution failed.Maybe you need to configure the job to choose one of your Ant installations?
linux(11)-linux命令dd删除多行
【PAT甲级】1012 The Best Rank (25 分)
【PAT甲级】1011 World Cup Betting (20 分)
【PAT甲级】1010 Radix (25 分)(二分)
热门文章
Codeforces Global Round 4E(字符串,思维)
Atcoder Beginning Contest 134E(二分查找(upper_bound),思维)
【PAT甲级】1008 Elevator (20 分)
【PAT甲级】1009 Product of Polynomials (25 分)
【PAT甲级】1007 Maximum Subsequence Sum (25 分)
【PAT甲级】1006 Sign In and Sign Out (25 分)
【PAT甲级】1005 Spell It Right (20 分)
减小安装包之图片处理
生成.a文件步骤
iOS播放动态GIF图片
Copyright © 2011-2022 走看看