三大排序(插入排序,选择排序,冒泡排序)

插入排序

原理:将第i个数通过不断与前面大于他的数交换,直到插入到前面合适的位置。

代码

cpp 复制代码
void insert_sort(int arr[],int n){
	for(int i=1;i<n;i++){
        if(arr[i]<arr[i-1])
        for(int j=i-1;j>=0;j--){
            if(arr[j]>arr[j+1])
                swap(arr[j],arr[j+1]);
            else break;
        }
    }
}

选择排序

原理:每次将选出剩下序列中的最小值,将之交换到前面去。

代码

cpp 复制代码
void select_sort(int arr[],int n){
    for(int i=0;i<n;i++){
        int pos=i;
        for(int j=i+1;j<n;j++){
            if(arr[j]<arr[pos])pos=j;
        }
        swap(arr[pos],arr[i]);
    }
}

冒泡排序

原理:经过n轮遍历,逐步将最大的数放到后面

代码:

cpp 复制代码
void bubble_sort(int arr[],int n){
	for(int i=n-1;i>=0;i--){
        for(int j=0;j<i;j++){
            if(arr[j]>arr[j+1])
                swap(arr[j],arr[j+1]);
        }
    }
}
相关推荐
AI科技星1 分钟前
空间光速螺旋动力学:统一质量、引力、电磁与时空本源的公理化理论与全现象验证
c语言·开发语言·opencv·算法·r语言
zhengzhengwang1 分钟前
chrome v8 内存管理机制
jvm·chrome·算法
im_AMBER1 分钟前
Leetcode 140 括号生成 | 单词搜索
算法·leetcode
njsgcs2 分钟前
空间中最后一条折弯线垂直于第一条折弯线
算法
qq_404265833 分钟前
C++中的代理模式实战
开发语言·c++·算法
玛卡巴卡ldf5 分钟前
【LeetCode 手撕算法】(滑动窗口) 3-无重复字符的最长子串、438-找到字符串中所有字母异位词
数据结构·算法·leetcode·哈希算法
liuyao_xianhui5 分钟前
动态规划_最大子数组和_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
y = xⁿ6 分钟前
【LeetCodehot100】 T138 随机链表的复制 T148: 排序链表
数据结构·链表
老师好,我是刘同学1 小时前
基数排序原理与Python实现详解
python·排序算法
故事和你919 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象