插入排序题目整理(hdu)
2017-10-16 20:38
357 查看
将hdu上三道可以用插入排序解决的题目整理了一下,其中hdu2019是最简单的单次插入,而插入排序便是单次插入的循环。而hdu1872则是带上结构的插入循环,依次进阶。
在此我将三题的插入部分写的极为相像方便辨认。
hdu2019数列有序!
hdu1040(标准的插入排序)As Easy As A+B
在此我将三题的插入部分写的极为相像方便辨认。
hdu2019数列有序!
//单次插入 #include <iostream> using namespace std; int main() { int m,n,x[101]; while(cin >> n >> m){ //输入 if(n == 0 && m == 0) break; for(int i = 0;i < n;i++) cin >> x[i]; //插入排序(简易) x = m; int j = n - 1;int key = x ; while(j >= 0 && x[j] > key){ x[j+1] = x[j]; x[j--] = key; } //输出 int i; for(i = 0;i < n;i++) cout << x[i] << " "; cout << x << endl; } return 0; }
hdu1040(标准的插入排序)As Easy As A+B
#include <iostream> using namespace std; int main() { int num,n;int x[1000],j; cin >> num; while(num--){ cin >> n; for(int i = 0;i < n;i++) cin >> x[i]; for(int i = 1;i < n;i++){ j = i - 1; int key = x[i]; while(j >= 0 && x[j] > key){ x[j+1] = x[j]; x[j--] = key; } } j = 0; while(j < n - 1) cout << x[j++] << " "; cout << x[j] << endl; } return 0; }hdu 1872稳定排序
//结构型插入排序 #include <iostream> using namespace std; struct data { string name; int marks; }; int main() { data a[300];data b[300]; int num; while(cin >> num){ for(int i = 0;i < num;i++) cin >> a[i].name >> a[i].marks; //输入原排列 for(int i = 0;i < num;i++) cin >> b[i].name >> b[i].marks; //输入排序之后的排列 //插入排序 for(int i = 1;i < num;i++){ int j = i - 1; int key1 = a[i].marks; string key2 = a[i].name; while(j >= 0 && a[j].marks < key1){ a[j+1].marks = a[j].marks; a[j+1].name = a[j].name; a[j].name = key2; a[j--].marks = key1; } } //判断并输出 int flag1 = 0,flag2 = 0; for(int i = 0;i < num;i++) { if(a[i].marks == b[i].marks) flag1++; if(a[i].name == b[i].name) flag2++; } if(flag1 == num && flag2 == num) cout << "Right\n"; else if (flag1 == num) { cout << "Not Stable\n"; for(int i = 0;i < num;i++) cout << a[i].name << " " << a[i].marks << endl; } else { cout << "Error\n"; for(int i = 0;i < num;i++) cout << a[i].name << " " << a[i].marks << endl; } cin.clear(); } return 0; }
相关文章推荐
- 归并排序题目整理归并(hdu)
- HDU-1040-As Easy As A+B(诚如题目所说和A+B一样简单-插入排序水过)
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- 排序算法整理(1)插入排序
- 数据结构之插入排序之希尔排序(缩小增量排序)—参考整理严蔚敏数据结构
- 排序算法整理(C++):插入排序、交换排序、选择排序、归并排序
- HDU 4911 归并排序题目解析
- HDU_2019——向排序好的数列中插入数
- 算法整理(三):插入排序
- HDU 题目1106 排序
- [省选前题目整理][HDU 1521]排列组合(生成函数)
- 题目:链表插入排序
- [省选前题目整理][HDU 4609]3-idiots(FFT+生成函数)
- 常见排序算法整理(一)----冒泡排序、直接插入排序
- 华为训练题目:初级——图片整理(排序,字典)
- HDU 题目1106 排序
- 面试书上一些题目的整理:O(n)复杂度排序年龄 & 青蛙跳台阶
- 五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
- 排序h之直接插入排序(OJ题目)
- 常见排序算法:插入排序 <整理>