SuperHakce 算法实践之希尔排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SuperHakce 算法实践之希尔排序相关的知识,希望对你有一定的参考价值。
希尔排序:
Shell Sort 是改进直接插入排序的一种插入排序,又叫缩小增量排序法,其选择一组逐渐缩小的增量对待排数据进行分组排序,因为其可以大跨度的交换 2 个数据,所以其算法复杂度为 O(nlogn);因为一次增量排序就是跨度为 d 的直接插入排序,所以一次增量排序是稳定的原址排序,但是整个希尔排序是不稳定的非原址排序
Shell Sort 适合 n 比较大的数据
给定实例的shell排序的排序过程
假设待排序文件有10个记录,其关键字分别是:
49,38,65,97,76,13,27,49,55,04。
增量序列的取值依次为:
5,3,1
排序过程:
源代码:
#include <iostream> using namespace std; void shellSort(int map[],int length,int d); int main(){ int map[1000]; int number; cin >> number; for(int i = 0;i < number;i ++){ cin >> map[i]; } shellSort(map,number,number / 2); for(int i = 0;i < number;i ++){ cout << map[i] << " "; } cout << endl; } void shellSort(int map[],int length,int d){ for(int i = 0;i <= length - d;i ++){ for(int j = i + d;j <= length - 1;j ++){ if(map[j] < map[j - d]){ int temp = map[j]; map[j] = map[j - d]; map[j - d] = temp; } } } int dT = d / 2; if(dT == 0) return; shellSort(map,length,dT); }
本文出自 “SuperHakce” 博客,请务必保留此出处http://superhakce.blog.51cto.com/6671637/1904277
以上是关于SuperHakce 算法实践之希尔排序的主要内容,如果未能解决你的问题,请参考以下文章