排序算法,快速排序、快排,归并排序,冒泡排序,插入排序,计数排序,选择排序,n方排序、nlogn排序,稳定排序
乖乖的小黄鸡:
冒泡排序 排了n-1个 剩下一个就不用排序了
和选择排序类似 有一个擂台 不管是大擂台还是小擂台 插入排序就是扑克牌 快速排序就是服装店员排衣服 先选最中间 一眼看这个长度裙子应该放在哪里 一遍遍下去做的事情就是递归 np就是游戏里面选背包[doge] 我的意思 有趣的游戏和生活中有趣的事情总是暗藏玄机梦响-雨花凉:
假设有 5 个元素 { 5, 3, 4, 1, 2 } ,第一次 5 和 1 交换位置 { 1, 3, 4, 5, 2 },第二次 3 和 2 交换位置 { 1, 2, 4, 5, 3 },第三次 4 和 3 交换位置 { 1, 2, 3, 5, 4 } ,第四次 5 和 4 交换位置 { 1, 2, 3, 4, 5 }。第一次循环控制交换次数,第二层循环控制比较大小的次数。isromance666:
老师,多讲讲数据结构与算法的专题,现在市面上太缺了,比如string,链表,队列那些
【回复】好的。我后期会推出这个。课件是有的,只是还没有视频发布别再忽悠了:
讲解的非常好,尤其是图形演示一看就懂,给老师点赞,比很多机构的老师讲解好很多没有废话佑晋灵:
是怎么向更高一层归并的,有点不太懂[大哭]
【回复】先穿从最高层向下分,之后在最低层向上归云-小雨:
#include<iostream>和using namespace std,不是cpp的头文件和标准名称空间嘛,为什么后面的printf(c语言)使用不受影响?
【回复】回复 @青程教育 :我的意思是iostream中也包含printf嘛
【回复】如果是c语言,引用头文件stdio也是可以用printf的
【回复】回复 @云-小雨 :当然去包含,cpp是对c全包含的。任何纯c头文件也可以通过x.h->cx的转写方法被cpp引用。cpp的很多头文件包含了c的头文件的部分功能账号已注销:
归并排序有错,将b数组赋值给a数组的代码可以修改如下
for (int i = left, j = 0; i <= right; i++, j++) {
a【i】 = b【j】;
cout << i << " ";
}
【回复】这样不行的,排序时b数组不是这样存的婉生如:
为什么我按着老师的代码敲出来全是0[灵魂出窍]
【回复】回复 @婉生如 :#include <iostream>
using namespace std;
int a【8】={36,25,48,12,25,43,20,28};
int b【8】;
void msort(int l,int r){
if(l == r) return;
int mid = (l+r)>>1;
msort(l,mid);
msort(mid+1,r);
int i=l,j=mid+1,k=l;
while(i<=mid && j<=r){
if(a【i】<=a【j】){
b【k】=a【i】;
i++;
}else{
b【k】=a【j】;
j++;
}
k++;
}
while(i<=mid) b【k++】=a【i++】;
while(j<=r) b【k++】=a【j++】;
for(i=l;i<=r;i++) a【i】=b【i】;
}
int main() {
int n=8;
msort(0,n-1);
for(int i=0;i<n;i++){
printf("%d ",a【i】);
}
return 0;
}
【回复】回复 @青程教育 :归并排序蓦然丨回首丶:
快排的一览图中应该分为(0,4)和 (6,7),后续你制作的动图倒是没问题
【回复】快排其实有两种排法:
1、取中间元素作为基准元素
2、取最左侧元素作基准元素自先成稳i:
快速排序递归结束的条件判断那里看不懂,为什么左端点大于右端点的时候就直接return; ?中断函数以后呢?不继续排序了嘛?
【回复】因为二分的时候,左端点跑到右边去,就代表无需再分了今天也只喜欢猪猪:
只有我觉得排序好难嘛。脑子想不过来[辣眼睛]
【回复】看动画的演示会形象很多向日蔷薇:
老师,我有个问题,医院轮转的安排,是不是也是用到算法这个知识点
【回复】你可以详细描述一下轮转的事件内容凌风飞飞:
这个网站在哪里,想去里面写写自己理解的快速排序