数据结构实验之排序六:希尔排序
来源:互联网 发布:淘宝怎么删除卖家评价 编辑:程序博客网 时间:2024/06/18 13:46
Think:
今天是第一次接触 “希尔排序”的方法。。。所以肯定有理解不到位的地方。。看来是时候开一个排序的分类的。。
希尔排序是插入排序中的一种,其中dk为增量,表示每次移动的增量。
Problem Description
我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)
Input
连续输入多组数据,每组输入数据的第一行给出一个正整数N(N <= 10000),随后连续给出N个整数表示待排序关键字,数字间以空格分隔。
Output
输出dk=n/2和dk=1时的结果。
Example Input
10
10 9 8 7 6 5 4 3 2 1
10
-5 9 7 -11 37 -22 99 288 33 66
Example Output
5 4 3 2 1 10 9 8 7 6
1 2 3 4 5 6 7 8 9 10
-22 9 7 -11 37 -5 99 288 33 66
-22 -11 -5 7 9 33 37 66 99 288
#include<bits/stdc++.h>using namespace std;void ShellSort1(int a[], int n); // dk = n / 2;void ShellSort2(int b[], int n); // dk = 1;int a[10050];int b[10050];int main() { int n; while(cin >> n) { int i; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); for (i = 0;i <= n - 1;i ++) { cin >> a[i]; b[i] = a[i]; } ShellSort1(a, n); for (i = 0;i <= n - 1;i ++) { if (i == n - 1) cout << a[i] << endl; else cout << a[i] << " "; } ShellSort2(b, n); for (i = 0;i <= n - 1;i ++) { if (i == n - 1) cout << b[i] << endl; else cout << b[i] << " "; } } return 0; } void ShellSort1(int a[], int n) { int dk = n / 2; int i, j, t; for (i = dk;i <= n - 1;i ++) { for (j = i - dk;j >= 0;j = j - dk) { if (a[j] > a[j + dk]) { t = a[j]; a[j] = a[j + dk]; a[j + dk] = t; } } } } void ShellSort2(int b[], int n) { int dk = 1; int i, j, t; for (i = dk;i <= n - 1;i ++) { for (j = i - dk;j >= 0;j = j - dk) { if (b[j] > b[j + dk]) { t = b[j]; b[j] = b[j + dk]; b[j + dk] = t; } } } }/***************************************************User name: Result: AcceptedTake time: 0msTake Memory: 240KBSubmit time: 2017-02-22 14:55:13****************************************************/
0 0
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- lecture9-提高模型泛化能力的方法
- Java 实现导出excel表 POI/Java实现不同excel格式(*.xls、*.xlsx)文件的读取
- 第3,4,5天的学习知识点
- 并发和并行的区别
- C 语言实现函数回调
- 数据结构实验之排序六:希尔排序
- MySQL进阶漂流记(一)
- Andriod作业
- 究竟啥才是互联网架构“高并发”
- 北京理工大学2017年数据结构算法题之八皇后问题
- PLSQL Logoff Trigger
- Sqlite3批量写入数据到数据库中
- 【智利收款】智利本地支付Servipag
- Android Bitmap二次采样,大图处理