首页 > 编程语言 >排序算法,冒泡,选择,插入

排序算法,冒泡,选择,插入

时间:2024-01-11 22:36:32浏览次数:39  
标签:arr temp int ++ 算法 冒泡 printf sizeof 排序

比较慢:

冒泡排序:

列表每两个相邻的数,如果前⾯⽐后⾯⼤,则交换这两个数。

⼀趟排序完成后,则⽆序区减少⼀个数,有序区增加⼀个数。

代码关键点:趟、⽆序区范围


排序算法,冒泡,选择,插入_#include

排序算法,冒泡,选择,插入_冒泡排序_02

#include "stdio.h"


int main(){
    int arr[] = {8, 32, 22, 73, 95, 13, 9, 82, 23, 46, 71, 52, 90, 53, 77, 75, 65, 64, 74, 24};
    int n = sizeof (arr) / sizeof (arr[0]);
    int i, j;
    for(i = 0; i < n; i++){
        for(j = 0; j < n - i - 1; j ++){
            if(arr[j] > arr[j+1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    printf("Output:\n");
    for(int k = 0; k < n; k++){
        printf("%d ", arr[k]);
    }
    return 0;
}
选择排序:

选择最小的数

#include "stdio.h"

int main(){
    int arr[] = {8, 32, 22, 73, 95, 13, 9, 82, 23, 46, 71, 52, 90, 53, 77, 75, 65, 64, 74, 24};
    int n = sizeof (arr) / sizeof (arr[0]);
    int i, j;
    for(i = 0; i < n - 1; i++){
        for(j = i; j < n; j++){
            if(arr[j] < arr[i]){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    printf("Output:\n");
    for(int k = 0; k < n; k++){
        printf("%d ", arr[k]);
    }
    return 0;
}
插入排序:

初始时⼿⾥(有序区)只有⼀张牌

每次(从⽆序区)摸⼀张牌,插⼊到⼿⾥已

有牌的正确位置

排序算法,冒泡,选择,插入_i++_03

#include "stdio.h"


int main(){
    int i, j, temp;
    int arr[] = {8, 32, 22, 73, 95, 13, 9, 82, 23, 46, 71, 52, 90, 53, 77, 75, 65, 64, 74, 24};
    int n = sizeof (arr) / sizeof (arr[0]);
    //表示摸到的牌的下标
    for(i = 1; i < n; i++){
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > temp){
            //大的后移
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = temp;
    }
    for(int k = 0; k < n; k++){
        printf("%d ", arr[k]);
    }
    return 0;
}

标签:arr,temp,int,++,算法,冒泡,printf,sizeof,排序
From: https://blog.51cto.com/u_16172166/9204298

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题
    五、用go语言,考虑一棵用RB-INSERT插人n个结点而成的红黑树。证明:如果n>1,则该树至少有一个红结点。文心一言:要证明这个问题,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它在插入和删除操作中维护一些属性,以保证搜索、插入和删除操作的时间复杂性为O(logn)。红......
  • 文心一言 VS 讯飞星火 VS chatgpt (176)-- 算法导论13.3 5题
    五、用go语言,考虑一棵用RB-INSERT插人n个结点而成的红黑树。证明:如果n>1,则该树至少有一个红结点。文心一言:要证明这个问题,我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树,它在插入和删除操作中维护一些属性,以保证搜索、插入和删除操作的时间复杂性为O(logn)......
  • Top-N推荐算法 Top-N recommendation Algorithms
    引言推荐算法是计算机专业中的一种算法,通过一些计算,能够推测用户喜欢的东西,在互联网环境中应用比较广泛。Top-N算法在生活中非常常见,比如学术论文推荐论文、音乐软件推荐歌曲等。今天看到一篇名叫"ARevisitingStudyofAppropriateOfflineEvaluationforTop-NRecommendati......
  • 机器学习-决策树系列-贝叶斯算法-概率图模型-29
    目录1.复习条件概率2.正式进入3.生成式与判别式这个阶段的内容,采用概率论的思想,从样本里面学到知识(训练模型),并对新来的样本进行预测。主要算法:贝叶斯分类算法、隐含马尔可夫模型、最大熵模型、条件随机场。通过本阶段学习,掌握NLP自然语言处理的一些基本算法,本阶段的理解对......
  • 加密算法的比较
    对称加密 非对称加密des(64位补齐) aes(128位补齐) blowfish(64位补齐) rsa单位(Byte) des_ecb des_cbc des_cfb aes_ecb aes_cbc aes_cfb blowfish_cbc blowfish_cfb rsa密文长度(50) 56Byte 56Byte 56Byte 64Byte 64Byte 64Byte 56Byte 56Byte 128Byte密......
  • 冒泡排序初探
        冒泡排序是一种基于比较和交换操作的排序算法。每轮冒泡的过程都是从第一个元素开始,将该元素和相邻下一个元素进行比较和交换,使得较大的元素向右移动(如果该元素大于下一个元素,则两个元素交换;如果该元素小于等于下一个元素,则保持不变)。这样一来,每轮冒泡的过程都可以确定......
  • 《算法竞赛》题解---三分
    三分法模板三分法#include<bits/stdc++.h>#defineeps1e-8//或者constdoubleeps=1e-8;--主要是doubleusingnamespacestd;intn;doublea[15],l,r;doublecheck(doublex){ doubleans=0; for(inti=n;i>=0;i--) ans=ans*x+a[i];//秦九韶公式 returnans;}......
  • 《算法竞赛》---三指针
    ----双指针(尺取法)1.找出指定和的整数对----p37(书页)哈希表#include<bits/stdc++.h>usingnamespacestd;inta[100010];intmain(){ios::sync_with_stdio(false);cin.tie();cout.tie();unordered_map<int,bool>q;intn,m;cin>>n>>m;fo......
  • 《算法竞赛》---二分
    整数二分经典模型1.最大值最小化(最大值尽量小)序列划分-----p48#include<bits/stdc++.h>usingnamespacestd;intn,k;//longlongsum;inta[1000000];boolcheck(intx){longlongres=0,cnt=0;res=a[1];for(inti=2;i<=n;i++){if(res+a[i]<......
  • 《算法竞赛》---搜索
    搜索二叉树搜索bfs搜索二叉树---p98#include<bits/stdc++.h>usingnamespacestd;constintN=1e5;intn;chara[100000];structnode{charvalue;intlson,rson;}tree[N];intidx=1;intnewnode(charval){tree[idx].value=val,tree[idx].lson=0,tre......