直接插入排序 Shell(希尔)排序
来源:互联网 发布:孔浩java怎么样 编辑:程序博客网 时间:2024/05/29 04:43
直接插入排序
生成100~999之间的随机数的方法原来没见过,挺有趣的
插入的时候判断条件不要少写
/* 直接插入排序 */#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 10void CreatData(int a[],int n,int low ,int high);void InsertSort(int a[],int n);int main(){int i,data[N];CreatData(data,N,100,999);printf("排序前:\n ");for ( i = 0; i < N; ++i){printf("%d ",data[i] );}printf("\n");InsertSort(data,N);printf("排序后: \n");for ( i = 0; i < N; ++i){printf("%d ",data[i] );}printf("\n");return 0;}void CreatData(int a[],int n ,int low ,int high) //生成low~high之间的随机数并复制给数组a{int i,k;double d;srand(time(NULL));for (i = 0; i < n; ++i){d = (double)rand()/((double) RAND_MAX+1);k = (int)(d*(high-low+1));a[i] = k + low;}}void InsertSort(int a[],int n){int i,j,temp;for (i = 1; i < n; i++) //从无序区头部开始,将其中每个每个元素插入到有序区{temp = a[i];for(j = i-1 ; j >=0 && temp < a[j];j--) //在有序区查找应插入的位置{a[j+1] = a[j]; //后移一个位置}a[j+1] = temp; //插入}}
希尔排序
对直接插入排序进行改进 间隔的选择是希尔排序的重要部分
基本思想:
先将要排序的N 个数按间隔gap分成若干组,每组的元素的相差gap,对每组的全部元素进行直接插入排序,然后再用一个较小的间隔重复上述分组和排序,直至间隔为1.
/* 希尔排序 */#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 10void CreatData(int a[],int n,int low ,int high);void ShellSort(int a[],int n);int main(){int i,data[N];CreatData(data,N,100,999);printf("排序前:\n ");for ( i = 0; i < N; ++i){printf("%d ",data[i] );}printf("\n");ShellSort(data,N);printf("排序后: \n");for ( i = 0; i < N; ++i){printf("%d ",data[i] );}printf("\n");return 0;}void CreatData(int a[],int n ,int low ,int high) //生成low~high之间的随机数并复制给数组a{int i,k;double d;srand(time(NULL));for (i = 0; i < n; ++i){d = (double)rand()/((double) RAND_MAX+1);k = (int)(d*(high-low+1));a[i] = k + low;}}void ShellSort(int a[],int n){int gap,i,j,temp;for(gap = n/2;gap > 0 ; gap/=2) //初始间隔为 n/2 ,以后每趟间隔缩小一半{for(i = gap ; i< n ;i++){temp = a[i];/* 对一组间隔为gap的元素进行插入排序*/ for(j = i-gap;j>=0&&a[j]>temp; j-=gap){a[j+gap] = a[j];}a[j+gap] = temp; //插入}}}
0 0
- 直接插入排序 Shell(希尔)排序
- 插入排序(直接插入排序和希尔(shell)排序
- 【排序算法】直接插入排序与希尔(Shell)排序
- 直接插入排序,希尔排序
- 直接插入排序、希尔排序
- 直接插入排序-->希尔排序
- 插入排序-直接插入排序 希尔排序
- 面试利器(二)-------插入排序(直接插入排序和希尔排序(Shell排序))
- 直接插入排序,希尔排序,快速排序
- 插入排序(直接插入+希尔排序)
- 插入排序(直接 和 希尔)
- 插入排序:直接插入排序,折半查找排序,希尔排序
- 【排序】插入排序(直接插入排序、希尔排序)
- 【排序一】插入排序(直接插入排序&&希尔排序)
- 排序-->插入排序(直接插入排序&&希尔排序)
- 排序算法--直接插入排序、折半插入排序、希尔排序
- 直接插入排序和希尔排序
- 直接插入排序与希尔排序
- 【swift总结】基本的操作运行符
- shell知识点2
- =。=
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- mysql新建用户和授权登录
- 直接插入排序 Shell(希尔)排序
- 以游戏实例介绍Unity3d
- 初识CSS
- mvc review
- 3、Context上下文
- NSString 和 NSNumber 的相互转化
- 128 黙齎 李貴 曷若親征
- web前端优化总结
- CDOJ的使用