简单插入排序和希尔排序简单应用
来源:互联网 发布:人工智能产业创新联盟 编辑:程序博客网 时间:2024/05/18 03:40
一 . 简单插入排序:是指将无序序列中的各元素依次插入到已经有序的线性表中, 思想就是:在一个无序表中,把最初始第一个元素作为有序表,从第二个数开始一直到最后都插入到前面 有序表中,最终就得到有序表了。
希尔排序: 对插入排序做了较大改进,基本思想就是把整个无序序列分割成若干个小的子序列分别进行插入排序。不如最开始把相隔k=n/2的值作为一个子序列分别进行 插入排序,排序完后,又将相隔 k=k/2 的值的一个子序列分别进行插入排序,..以此一直到k=0结束,整个排序结束。
二. 简单插入排序C++表示:
#include <iostream>using namespace std;template <class T>void insort(T p[],int n){int j,k;T t;for(j=1;j<n;j++)//把第一个数作为顺序表,把第二到最后一个数往里面顺序插入{t=p[j];k=j-1;while((k>=0)&&p[k]>t){p[k+1]=p[k];k=k-1;}p[k+1]=t;}return;}
三.希尔排序C++表示:
#include <iostream>using namespace std;template <class T>void shellsort(T p[],int n){int i,j,k;T t;k=n/2; //初始增量值while(k>0){for(i=k;i<=n-1;i++){t=p[i];j=i-k;while((j>=0)&&p[j]>t){p[j+k]=p[j];j=j-k;}p[j+k]=t;}k=k/2;//缩小增量值}return;}
四. 具体应用实例:
/*#include "qck.h"*/#include <iomanip>#include <ctime>#include "insort.h"#include "shellsort.h"int main(){int i,j;/*double p[50],r=1.0;*/int p[50];// for(i=0;i<50;i++) //产生50个0~1之间的随机数// {// r=2053.0*r+13849.0;j=r/65536.0;// r=r-j*65536.0;p[i]=r/65536.0;// }// for(i=0;i<50;i++) //产生50个100~300之间的随机数// {// p[i]=100.0+200.0*p[i];// }srand(time(0));for(i=0;i<50;i++){p[i]=rand()%500;}cout<<"排序前的序列:"<<endl;for(i=0;i<10;i++){for(j=0;j<5;j++)cout<<setw(10)<<p[5*i+j];cout<<endl;}//bobsort(p+20,10);//冒泡排序//qck(p,50);//快速排序//insort(p+10,40);//插入排序shellsort(p,50);//希尔排序cout<<"排序后的序列:"<<endl;for(i=0;i<10;i++){for(j=0;j<5;j++)cout<<setw(10)<<p[5*i+j];cout<<endl;}return 0;}
五 .实验结果
- 简单插入排序和希尔排序简单应用
- 简单插入排序和希尔排序
- 插入排序之之简单插入排序和希尔排序
- 简单插入排序与希尔排序
- 【算法】简单插入排序与希尔排序
- 简单插入排序 二分插入排序 shell希尔插入排序
- 插入排序和希尔排序-面试的希尔排序原来这么简单
- 插入排序算法之直接排序和希尔排序,java简单实现
- 排序总结:插入(简单和改进)、希尔、选择、冒泡、快速、堆排序、归并排序
- C实现三种插入排序-简单插入排序、二分插入排序、希尔插入排序
- 直接插入排序、二分插入排序、希尔排序、冒泡排序与简单选择排序
- Java的简单应用之插入排序和shell排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- 插入排序和希尔排序
- dos的疑问
- java两种实例化
- WideCharToMultiByte和MultiByteToWideChar函数的用法
- Flex As3 解析XML文件(上:基本操作)
- CC FAVNUM (AC自动机+数位DP)
- 简单插入排序和希尔排序简单应用
- Java基础语法
- java经典算法_005三元运算符
- SPFA算法
- C++中的异常处理(一)
- Android 发送短信 源代码
- 222
- Spring3.1集成hibernate3.6出现java.lang.VerifyError错误
- c++笔记0