排序小结
2025-12-07 15:55:10
发布于:广东
//冒泡排序
//相邻两者进行比较,如果前者大于后者则进行交换(升序)
//相邻两者进行比较,如果前者小于后者则进行交换(降序)
// j,j+1 最多循环n-1次
for(int i=1;i<n;i++){//循环n-1次
for(int j=1;j<n;j++){//j不能等n,当j=n的时候j+1会发生越界
// a,b进行交换
//swap(a,b);//通过swap函数进行交换
//int tmp=a;a=b;b=tmp;//通过一个中间变量进行交换
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);//满足条件就进行交换
}
}
}
//插入排序
// 3 4 1 2 5
//从第二个位置开始,对于第i个位置进行插入操作
//对于i位置前面所有的位置,如果值大于i位置的值则进行后移操作(升序)
//对于i位置前面所有的位置,如果值小于i位置的值则进行后移操作(降序)
for(int i=2;i<=n;i++){//循环n-1次
int tmp=a[i];//将值存起来
for(int j=i-1;j>=1;j--){
if(a[j]>tmp){
a[j+1]=a[j];//执行后移
}
}
}
//选择排序
// 3 2 4 1 0
// 0 1 2 3 4//排序结果
//第i个位置代表的就是第i小的值
//核心思想:找最小值
// 3 2 4 1 0
// 1 2 3 4 5
// 最小值:0
//将0交换到他正确的位置上
// 0 2 4 1 3
// 从第二项开始后面的最小值
// 第二小:1
// n*n
//sort();
//a[N];
for(int i=1;i<=n;i++){
int mi_inx=i;//记录最小值的下标
for(int j=i;j<=n;j++){//如果当前找第i则表明前i-1个是已经找好的状态
if(a[j]<a[mi_inx]){
mi_inx=j;
}
}
swap(a[i],a[mi_inx]);//交换
}
这里空空如也















有帮助,赞一个