首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
联系客服
服务器资讯
/
香港服务器租用
/
香港VPS租用
/
香港云服务器
/
美国服务器租用
/
台湾服务器租用
/
日本服务器租用
/
官方公告
/
帮助文档
直接插入排序+希尔排序+冒泡排序+快速排序+选择排序+堆排序+归并排序+基于统计的排序
发布时间:2024-03-03 12:03:45 分类:帮助文档
直接插入排序+希尔排序+冒泡排序+快速排序+选择排序+堆排序+归并排序+基于统计的排序 插入排序:直接插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 其他:归并排序、基于统计的排序 一、直接插入排序 #include
#include
/* 直接插入排序:是就地排序,是稳定的,时间复杂度:O(n^2) */ int a[105]; int n; int main() { int t; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } //认为:a[1] 是有序区域,a[2---n]是乱序区 for(int i=2;i<=n;i++) { t=a[i]; int j; for(j=i-1;j>=1;j--) { if(a[j]>t) { a[j+1]=a[j]; } else{ break; } } a[j+1]=t; } for(int i=1;i<=n;i++) { printf("%d ",a[i]); } return 0; } 二、希尔排序 #include
#include
/* 希尔排序:取希尔增量序列时: 是就地排序,不是稳定的,时间复杂度:O(n^2) */ int a[105]; int n; int main() { int t; scanf("%d",&n); int k=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int d=n/2;d>=1;d=d/2) { k++;//计算趟数 //以增量d分组,对每组进行直接插入排序 for(int i=1+d;i<=n;i++) { t=a[i]; int j; for(j=i-d;j>=1;j=j-d) { if(a[j]>t) { a[j+d]=a[j]; } else{ break; } } a[j+d]=t; } printf("第%d趟,增量为%d,排好的结果:",k,d); for(int i=1;i<=n;i++) { printf("%d ",a[i]); } printf("\n"); } return 0; } 三、冒泡排序 #include
#include
#define maxx 100 /*所谓交换,是指根据序列中两个关键字比较的结果来对换这两个关键字在序列中的位置。*/ int a[maxx],n,t; int v;//标记 int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } //冒泡排序 //外层循环控制 排序的趟数 n个元素排序需要循环n-1次 【1】 for(int i=1;i<=n-1;i++) { v=0; //内层循环控制比较的次数 n个元素第i趟比较n-i次 【2】 for(int j=1;j
a[j+1]) { v=1; t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } if(v==0)//v仍然等0,说明没交换,说明完全有序 { break; } } for(int i=1;i<=n;i++) { printf("%d ",a[i]); } return 0; } 四、快速排序 排序区间[l,r] , 选 a[l] 做基准数 两个下标i=l,j=r;相对遍历。 先用j 找一个比x小的数,放在i位置,i++ 再用i 找一个比x大的数,放在j位置,j-- 不断循环,直到 i==j为止,此时i(j)位置就是x的位置 #include
#include
/*交换排序:基于数据交换的排序 1.冒泡排序:是就地排序, 是稳定的,时间复杂度 O(n^2) 2.快速排序:---递归: 是就地排序,不稳定,时间复杂度O(nlogn) ------待排序的数组已经保持需要的顺序了,容易退化成O(n^2) 每一趟:先选一个标准(基准数),按照基准数进行划分,把比基准数小的交换到他前面, 把比基准数大的交换到他后面 基准数怎么选:对区间(l,r) (1)选排序区间的第一个数--a[l]------为例 (2)选排序区间的最后一个数--a[r] */ void QuickSort(int a[],int l,int r) {//选排序区间的第一个数--a[l]做基准数 if(l>=r) { return; } int x=a[l]; int i=l; int j=r; while(i
x)j--; if(i
#include
#define maxx 100 int a[maxx],n,t; int minn; int main() { int minn;//最小元素的下标 scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } //简单选择排序:就地排序, 时间复杂度O(n^2) ,不稳定的排序 //简单选择排序:进行n-1趟排序,每次都在乱序区中选择一个最小的元素,放在乱序的第一个位置,此时有序区+1,乱序区-1 for(int i=1;i<=n-1;i++)//控制循环趟数 { minn=i; for(int j=i+1;j<=n;j++)//控制乱序区,去找最小的元素的位置 { if(a[j]
完全二叉树----->数组存储 a[i]父亲:a[i/2] a[i]左孩子:a[2*i] a[i]右孩子:a[2*i+1] 1.建堆(两种方法) (1)自我初始化:在原数组的基础上进行初始化 从子树入手由小到大去调整每棵子树; 对于每棵子树,我们向下调整: 让根节点和左右孩子节点作比较,如果子树值小:最小值和根节点交换,继续向下调整子树 (2)通过插入来建堆 数组每多一个数据就调整一次。新插入的数据放在放在最后,如果其比父亲大或者新插入的数据是根节点就不用调整否则就向上调整 堆排序: (1)建堆(流程见上) (2)循环n次 每次输出最小的数---->a[1], 删掉a[1]--->让堆中最后一个节点来替换a[1],然后重新对a[1]向下调整 #include
#include
#define maxx 100 /*升序排列 堆排序:就地排序,不稳定 ,时间复杂度O(nlogn) n个元素,保存在a数组中,直接在a数组中 1.初始化成一个小顶堆: 下标最大的内部节点的下标是几?最后一个内部节点的下标是几? n/2 (1)找到最后一个内部节点(n/2),依次调整每棵子树 调整过程:依次向下比较调整:若该节点比左右孩子节点中的最小值大,进行交换,直到不满足该条件位置 2.在小顶堆的基础上,进行堆排序 循环n-1次: (1)输出(删除)根节点; (2)最后一个位置的节点代替根节点 (3)向下调整 ---输入最后一个元素 3.堆中插入一个元素: (1)把元素放到数组最后 (2)向上和父亲节点比较进行调整 */ void downAdjust(int a[],int i,int m)//对以 下标i的元素 为根节点的子树进行向下调整 {//now是当前调整的节点,next是now的孩子,也是下一次要调整的节点 int now=i; int next; int t; while(now*2<=m) { next=now*2;//now的左孩子 if(next+1<=m&&a[next+1]
1) { next=now/2;// now的父亲 if(a[next]<=a[now])//父亲节点比当前节点大 { break; } else { t=a[now]; a[now]=a[next]; a[next]=t; now=next; } } } int main() { int n;//元素个数 int a[maxx];// scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } //把a数组初始化成小顶堆 for(int i=n/2;i>=1;i--) { downAdjust(a,i,n); } //堆排序 int m=n;//数组最后一个元素下标 int t; for(int i=1;i<=n;i++) { printf("%d ",a[1]); t=a[1]; a[1]=a[m]; a[m]=t; m--; downAdjust(a,1,m); } printf("\n"); for(int i=1;i<=n;i++) { printf("%d ",a[i]); } printf("\n"); //在堆中插入一个元素; n++; scanf("%d",&a[n]); upAdjust(a,n); return 0; } //堆的应用--优先队列 七、归并排序 #include
#include
#define maxx 100 void merge(int a[],int l,int mid,int r) { //l~mid //mid+1~r int t[maxx]; int k=0;//t数组的下标 int i=l; int j=mid+1; while(i<=mid&&j<=r) { if(a[i]<=a[j]) { t[k]=a[i]; k++; i++; } else{ t[k]=a[j]; k++; j++; } } while(i<=mid) { t[k]=a[i]; k++; i++; } while(j<=r) { t[k]=a[j]; k++; j++; } for(int i=0;i
上一篇
租用远程服务器多少钱
下一篇
租用香港服务器多少钱
相关文章
服务器内存条怎么区分
从服务器下载文件到本地
1u等于多少g怎么算
【问题】本地计算机上的MySQL服务启动后停止。某些服务在未有其他服务或程序使用时将自动停止。
服务器cpu占用过高怎么办
在linux操作系统Centos上安装服务器相关软件
iPhone手机怎么弄vps独立ip
EasyConnect 客户端版本与服务器不匹配,循环下载
免费搭建幻兽帕鲁服务器,白嫖阿里云游戏服务器
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.