首页 > 编程语言 >排序算法 之 (冒泡排序)

排序算法 之 (冒泡排序)

时间:2023-03-15 18:24:04浏览次数:34  
标签:nums int 49 length 冒泡排序 算法 printf 排序

10.3、冒泡排序

从后往前依次比较两个元素,如果后面小于前面就交换,每次都会寻找到其中最小的那个元素放到前面

冒泡排序图解

冒泡排序的C代码实现

#include <stdio.h>
#include <stdlib.h>

#define boolean int
#define false 0;
#define true 1;

//冒泡排序:nums:待排序数组,length:数组长度
boolean BubbleSort(int nums[],int length){
    if(length == 0) return false;//数组为空,不需要排序
    for(int i = 0; i < length-1;i++){
        boolean flag = false;//用来标记是否已经排好序了
        for(int j = length-1;j > i;j--){
            if(nums[j] < nums[j-1]){//如果后面的比前面小就交换
                int temp = nums[j];
                nums[j] = nums[j-1];
                nums[j-1] = temp;
                flag = true;
            }
        }
        if(!flag){//如果这次交换一次都没有发现表示已经排好序了,就直接退出
            return true;
        }
    }
}


int main(){
    int nums[] = {49,38,65,97,76,13,27,49};
    int length = 8;
    printf("直接插入排序前:");
    for(int i = 0; i < length ;i++){
        printf("%d ",nums[i]);
    }
    BubbleSort(nums,length);
    printf("\n");
    printf("直接插入排序后:");
    for(int i = 0; i < length ;i++){
        printf("%d ",nums[i]);
    }

    return 0;
}
//结果:
直接插入排序前:49 38 65 97 76 13 27 49 
直接插入排序后:13 27 38 49 49 65 76 97 

标签:nums,int,49,length,冒泡排序,算法,printf,排序
From: https://www.cnblogs.com/shuisanya/p/17219513.html

相关文章

  • 排序算法 之 (简单选择排序)
    10.5、简单选择排序这个算法的思想很简单,每次选择从没有排序的元素中选择最小(大)元素放到到前(后)面简单选择排序是不稳定的简单选择排序代码实现#include<stdio.h>#i......
  • TZOJ 5795: 奖金 拓扑排序
    描述  由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,YaliCompany总经理Mr.Z心情好,决定给每位员工发奖金。公司决定以每个人本年在公司的贡献为标准来计算他们......
  • 排序算法 之 (直接插入排序)
    10.6、堆排序对于n个关键字序列L[1...n],满足下面某一条性质,则称为堆(Heap)若满足:\(L(2i)\leL(i)\)且\(L(2i+1)\leL(i)\),\(1\lei\len\),大根堆(大顶堆)若满足:\(L(......
  • SM4分组密码算法速度测试
       Intel(R)Xeon(R)[email protected] 一百万组,耗时约5.5秒for(inti=0;i<1*1000*1000;i++){cipher(data,text,key);}[......
  • 算法 -- 寻找两个正序数组的中位数(二分查找)
    原题:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nu......
  • TZOJ 7690: 家谱树 拓扑排序
    描述 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的孩子的信息。输出一个序列,使得每个人的后辈都比那个人后列出。 输入 第1行一个......
  • 百度2024届暑期实习后端算法题详解
    目录一Coding1题目描述解题思路详细代码二Coding2题目描述解题思路详细代码三Coding3题目描述解题思路详细代码这是百度2024届暑期实习后端岗位的第一轮笔试,总共有十五......
  • 冒泡排序
     冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没......
  • 算法随想Day50【动态规划】| LC647-回文子串、LC516-最长回文子序列
    LC647.回文子串动态规划法:遍历顺序:从下往上,从左往右当s[i]与s[j]相等时,需要考虑三种情况:情况一:下标i与j相同,同一个字符例如a,当然是回文子串情况二:下标i与j相差......
  • 算法随想Day46【动态规划】| LC300-最长递增子序列、LC674-最长连续递增序列、LC718-
    LC300.最长递增子序列dp[i]含义:i之前包括i的以nums[i]结尾的最长递增子序列的长度intlengthOfLIS(vector<int>&nums){intsize=nums.size();vector......