插入排序(insertSort.cpp)
来源:互联网 发布:最新博客网站程序源码 编辑:程序博客网 时间:2024/05/19 13:55
插入排序:insertSort.cpp
【题目描述】
给定整数n(待排序整数的个数)和k(插入排序的趟数)、以及n个待排序的整数,要求从小到大进行k趟插入排序,并输出第k趟插入排序后的结果,各整数之间用一个空格隔开。每趟排序从左到右扫描未排序数据,将起始(第一个)数据插入到左侧已有序的数据子序列的合适位置,如此反复,n趟插入排序后,所有数据均有序。
【输入】
输入文件insertSort.in的第一行有一个整数n(1<n≤30000),为待排序数据的个数;紧接着一行共有n个待排序的整数,每个整数之间用空格隔开;第三行有一个整数k(k³1),为第几趟插入排序。
【输出】
输出文件insertSort.out包括n个整数,是第k趟插入排序后的结果,各整数之前有一个空格。
【输入输出样例1】
insertSort.in
insertSort.out
16
1 6 14 4 11 9 16 7 8 2 5 12 3 10 13 15
10
1 2 4 6 7 8 9 11 14 16 5 12 3 10 13 15
【输入输出样例2】
insertSort.in
insertSort.out
16
1 6 14 4 11 9 16 7 8 2 5 12 3 10 13 15
20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
【提示】
对n个数值进行插入排序,进行n-1趟插入排序后,整个排序过程完成,所有数值均有序。因此,
(1)若排序趟数k<n-1,则输出数据可能无序、也可能有序;
(2)若k³ n-1,则输出结果都为最终排序结果,实际仅需进行n-1(而不是k)趟排序。
(3)注意:数据序列为空、插入第一个数据元素的过程 被视为插入排序算法的第一趟排序。
【数据限制】
整数个数n满足:1<n≤30000。
排序趟数k满足:k³1。
#includeconst int N0=30001;/* 采用的'插入'排序算法, 按升序(从小到大)排序a[]中的元素, 实现:【从左向右插入各元素】, 插入趟数=k */void insertSort(int a[], int n, int k){int i, j, index, pivotEle;//i,j-循环控制变量; index-待插入元素应该摆放的位置; pivotEle-1趟插入排序时待插入的元素for( i=1; i pivotEle ){index = j;break;}}//(3)将位置 j = index ~ i 上的元素整体右移1位(具体实现:一个个元素‘从右至左’右移1位)for( j=i; j>index; j-- ){a[j] = a[j-1];}//(4)将待插入元素pivotEle摆放在位置indexa[index] = pivotEle;//(*)如果排序已经进行了k趟, 则强制停止排序&&退出if( i == k-1 ){break;}}}int main(){int i, n, a[N0], k; //i-循环变量; n-整数个数; a[]-存储n个整数的数组; k-排序的趟数//(1)输入数据scanf("%d", &n); //输入整数n(待排序数值个数)for( i=0; i = n){//排序趟数k大于数据元素的个数n,则只输出k趟插入形成的n个有序的元素for(i=0; i
- 插入排序(insertSort.cpp)
- 插入排序(InsertSort)
- 插入排序(InsertSort)
- 插入排序(InsertSort)
- 插入排序算法(InsertSort)
- 插入排序之直接插入(InsertSort)
- 内部排序之插入排序(InsertSort)
- 插入排序法(InsertSort)c++实现
- 插入排序InsertSort
- insertSort - 插入排序
- 插入排序 InsertSort
- 插入排序 InsertSort
- 插入排序InsertSort
- 插入排序-InsertSort
- java insertsort 插入排序
- 插入排序-insertsort
- InsertSort 插入排序算法
- 数据结构-插入排序InsertSort
- Spring MVC拦截器(Interceptor)
- 2017多校联合一/hdu6040Hints of sd0061
- Spring Boot+Thymeleaf出现org.xml.sax.SAXParseException: 元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止。
- linux安装问题
- 获取字符串的长度
- 插入排序(insertSort.cpp)
- nyoj-37 回文字符串
- 输出错误日志
- Android Post方式提交数据
- jeecg excel 导入到java
- Ubuntu下设置DNS的方法
- mysql 触发器 监听这个表插入时增加数据 在某字段变动时进行触发
- 类占用空间的计算
- Table(表)