数据结构 shell 快速
来源:互联网 发布:mac玩天涯明月刀 编辑:程序博客网 时间:2024/06/07 09:14
//shell (插入算法的升级版)
#include "stdio.h"#include "stdlib.h"#include "time.h"#define MAX 10#define SWAP(x,y) {int t = x; x= y; y =t;}int n=0;void shell(int [],int);void main(){int number[MAX]={0};int i;int gap;srand(time(NULL));printf("排序前:");for(i = 0;i<MAX;i++){number[i] = rand()%100;printf("%d ",number[i]);}printf("\nshell排序算法:\n");for(gap=MAX/2;gap>0;gap/=2)shell(number,gap);}void shell(int number[],int gap){int i,j,k,t;printf("gap:%d\n",gap);for(i=0+gap;i<MAX;i++){t = number[i];j= i-gap;while(t<number[j]){number[j+gap] = number[j];j-=gap;if(j==-1||j<0)break;}number[j+gap] = t;printf("第%2d次排序:",++n);for(k=0;k<MAX;k++)printf("%d ",number[k]);printf("\n");}printf("\n");}
//快速排序 (三种)
#include "stdio.h"#include "stdlib.h"#include "time.h"#define MAX 10#define SWAP(x,y) {int t=x;x=y;y=t;}int partition(int number[],int ,int);void kssort1(int [],int,int);void kssort2(int [],int,int);void kssort3(int [],int,int);void main(){int number[MAX]={0};int i;srand(time(NULL));printf("排序前:");for (i=0;i<MAX;i++){number[i] = rand()%100;printf("%d ",number[i]);}printf("\n");kssort3(number,0,MAX-1);printf("排序后:");for (i=0;i<MAX;i++){printf("%d ",number[i]);}printf("\n");}void kssort1(int number[],int left,int right){int l = left,r = right;int s;if (left<right){s = number[left];right++;left--;while(1){while(number[++left]<s);while(number[--right]>s);if(left>=right){break;}SWAP(number[left],number[right]);}//SWAP(number[l],number[right]);kssort1(number,l,left-1);kssort1(number,right+1,r);}}void kssort2(int number[],int left,int right){int l = left,r = right;int s;if (left<right){s=number[(left+right)/2];left--;right++;while(1){while(number[++left]<s);//向右找while(number[--right]>s);//向左找if(left>=right)break;SWAP(number[left],number[right]);}kssort2(number,l,left-1);kssort2(number,right+1,r);}}int partition(int number[],int left,int right){int i=left;int j;int s=number[right];for (j=left;j<right;j++){if(number[j]<=s){SWAP(number[i],number[j]);i++;}}SWAP(number[i],number[right]);return i;}void kssort3(int number[],int left,int right){int p;if (left<right){p=partition(number,left,right);kssort3(number,left,p-1);kssort3(number,p+1,right);}}
0 0
- 数据结构 shell 快速
- 数据结构 排序算法 (插入、快速、Shell、堆、合并)
- [shell]shell快速入门教程
- 数据结构之 Shell排序
- 数据结构之shell排序
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- shell编程快速入门
- LINUX shell快速参考
- 快速编辑Shell命令行
- shell快速参考
- shell-crontab快速手册
- linux shell快速参考
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- 快速编辑 Shell 命令行
- unity自动切换BuildTarget
- 支付宝手机网页接口 报 系统繁忙,请稍后重试
- 【Python笔记】Python的几个高级语法概念浅析:lambda表达式 && 闭包 && 装饰器
- 企业公众号运营堪忧 微信涨粉已过黄金时代
- 内存溢出和内存泄漏的区别
- 数据结构 shell 快速
- mysql绑定参数bind_param原理以及防SQL注入
- 【linux c开发】GCC 编译链接后找不到动态库
- GCS shadows traversed, 4001 replayed
- 观察者模式
- iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
- MySQL 中文网 [MySQL FAQ]启用SELinux后,PHP连接MySQL异常
- DBA常用脚步汇总
- 爱译社