C++实现简单的希尔排序Shell Sort实例_C 语言

本文以实例形式讲述了基于C++实现简单的希尔排序Shell Sort的方法,是一个很经典的算法,具体实现代码如下:

#include <iostream>
using namespace std;
void ShellSort(int* iArray,int length)
{
 //初始化jump等于length
 int jump = length;
 //标记本趟检测是否进行了交换,
 // 若进行了 则还有下次从头开始的检测,
 // 否则停止,继续改变jump的值 做另一趟排序
 bool isSwap;
 while(jump != 0)
 {
  //jump每次/2
 jump = jump / 2;
 do{
  int i = 1;
  //初始化表示没有进行交换
  isSwap = false;
  while( i <= length - jump)
  {
  if(iArray[i] > iArray[i+jump])
  {
   int temp = iArray[i];
   iArray[i] = iArray[i+jump];
   iArray[i+jump] = temp;
   isSwap = true;
  }
  i++;
  }
 }while(isSwap == true);//如果进行了交换说明 增量为jump的序列
    //可能存在不是有序的 在检测一遍
     //否则说明增量为jump的序列是有序的
 }
}
int main()
{
 int iArray[] = {0,50,123,36,25,200,36,95,70,14,10,321,1,3,5,8};
 ShellSort(iArray,15);
 for(int i = 1; i <= 15; i++)
 {
 cout<<iArray[i]<<" ";
 }
 cout<<endl;
 return 0;

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
希尔排序
希尔 shell 排序、希尔排序实例、shell sort 排序、shell sort 反向排序、shell sort 数字排序,以便于您获取更多的相关知识。

时间: 2024-11-03 10:46:46

C++实现简单的希尔排序Shell Sort实例_C 语言的相关文章

自己简单封装的一个CDialog类实例_C 语言

本文实例讲述了自己简单封装的一个CDialog类实例.分享给大家供大家参考.具体如下: 该代码比较短小,实现了消息映射. Dialog.h头文件如下: #include <windows.h> class CDialog { public: //一条消息所包含的信息 struct MAP { UINT Msg; bool (*pf)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); int len; MAP *pNext; }; publ

C++选择排序算法实例_C 语言

选择排序 选择排序是一种简单直观的排序算法,它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常

7种排序算法的实现示例_C 语言

复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <time.h> void BubbleSort1 (int n, int *array) /*little > big*/{ int i, j; for (i=0; i<n-1; i++) {  for (j=n-1; j>i; j--)  {   if (array[j] < array[j-1])   {    int temp

C基础 mariadb处理的简单实例_C 语言

引言 MariaDB 是一款灰常不错开源数据库. 这里直接用它来解决业务问题. 业务需求: 现在数据库中表示按照天分表的. 突然我们需要按照月来处理数据. 例如输入一个玩家id, 查找这个玩家这个月内看了一件事几次. 我们先搭建一个环境. 操作系统: Linux version 4.4.0-22-generic (buildd@lgw01-41) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #40-Ubuntu SMP Thu M

常用的C语言排序算法(两种)_C 语言

1. 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 解决方法:选择排序法 实现代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { int num[10],i,j,k,l,temp; //用一个数组保存输入的数据 for(i=0;i<=9;i++) { scanf("%d",&num[i]);

浅析java 希尔排序(Shell)算法_java

先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<:-<d2<d1),即所有记录放在同一组中进行直接插入排序为止. 该方法实质上是一种分组插入方法. 原理图: 源代码 复制代码 代码如下: package com.zc.manythread; /**  *  * @author 偶my耶  *  *

解析shell排序的实现代码_C 语言

复制代码 代码如下: #include <iostream> using namespace std; void ShellQin(int A[],int n) {     int gap=n/2;     int i,j;     for(;gap>0;gap=gap/2)//设置初始gap,按照gap进行分组,gap按照gap/2递减     {         //设置好gap以后,从gap开始一直到最后一个元素,为每一个元素在其对应的组进行插入排序.gap应该是该组所在位置的第2

c语言实现词频统计的简单实例_C 语言

需求: 1.设计一个词频统计软件,统计给定英文文章的单词频率. 2.文章中包含的标点不计入统计. 3.将统计结果以从大到小的排序方式输出. 设计: 1.因为是跨专业0.0···并不会c++和java,只能用仅学过的C语言进行编写,还是挺费劲的. 2.定义一个包含单词和频率两个成员的结构体来统计词频(进行了动态分配内存,可以处理较大文本). 3.使用fopen函数读取指定的文档. 4.使用fgetc函数获取字符,再根据取得的字符是否是字母进行不同的处理. 5.采用快速排序法对统计结果进行排序. 5

C++实现位图排序实例_C 语言

在<编程珠玑>一书里提到了一种算法导论里没有提到过的位图排序方法,这种排序方法是通过牺牲空间效率来追求时间效率(线性时间)以达到时间-空间折中与双赢的目的.本文以实例形式简单讲一下位图排序思想. 一.问题描述      1.输入:一个至多包含1千万个非负整数的文件      2.特征:①每个数都是小于10000000的非负整数:②没有重复的数字:③数据之间不存在关联关系.      3.约束:①最多1MB的内存空间可用:②磁盘空间充足:③运行时间最多几分钟,最好是线性时间.