首页 > 其他分享 >冒泡排序

冒泡排序

时间:2022-12-01 18:32:17浏览次数:103  
标签:sort temp int ++ 冒泡排序 -- bubble


冒泡排序是一种交换排序

#include<iostream>
using namespace std;

void bubble_sort(int a[],int n){
for (int i = 0; i < n;i++){//外循环,趟数
//内循环
//第0趟:a[0]--a[n-1]都是无序区,如果不满足a[j]<a[j-1],则相邻的交换
//第1趟,a[0]有序,a[1]--a[n-1]是无序区,....
//....
//第i趟,a[0]--a[i-1]是有序区,a[i]--a[n-1]是无序区,...

for (int j = n - 1; j>i;j--){
if (a[j]<a[j-1]){
int temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
}

int main(){
int a[] = { 49, 38, 65, 97, 76, 13, 27 };

bubble_sort(a,7);

for (int i = 0; i < 7;i++){
cout << a[i]<<" ";
}

return 0;
}

代码还有优化的空间,如果发现内循环中没有发生一次交换,则说明无序区其实已经有序了,则程序可以终止。

#include<iostream>
using namespace std;

void bubble_sort(int a[],int n){
for (int i = 0; i < n;i++){
int ok = 0;
for (int j = n - 1; j>i;j--){
if (a[j]<a[j-1]){
int temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
ok = 1;
}

}

if (!ok){
return;
}
}
}


int main(){
int a[] = { 49, 38, 65, 97, 76, 13, 27 };

bubble_sort(a,7);

for (int i = 0; i < 7;i++){
cout << a[i]<<" ";
}

return 0;
}


标签:sort,temp,int,++,冒泡排序,--,bubble
From: https://blog.51cto.com/u_15899184/5903576

相关文章

  • 利用Python手把手带上实现冒泡排序
    前言之前写过一篇关于Python算法分析的文章--《​​利用Python浅尝算法分析​​》,想要学好计算机,数据结构和算法几乎是无法回避的课题,因为我们学习编程第一节课老师都会......
  • 冒泡排序、快速排序
    冒泡排序、快速排序都属于交换排序,快速排序对冒泡排序优化。冒泡排序 (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较......
  • 6分钟彻底掌握冒泡排序
    冒泡排序原理    冒泡排序(BubbleSort),重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作......
  • P6186 [NOI Online #1 提高组] 冒泡排序
    随便给出一组数据:53124初始逆序对数量:\(6\)。冒泡排序一轮:31245\(6-4=2\)。两轮:12345\(2-2=0\)。观察会发现,数\(x\)会一直后退,直到有一个大于\(......
  • luogu P8500 [NOI2022] 冒泡排序
    题面传送门这个部分分提示得太妙了。首先这个冒泡排序的壳已经被套烂了,就是对逆序对计数。首先观察一下,发现第一个样例解释中在等于某个限制对应的最小值的时候取到逆序......
  • luogu P8859 冒泡排序
    题面传送门首先\(type=1\)的情况是平凡的,设可以发现一个数不需要被操作当且仅当这个数前面的数都小于这个数。可以设计出这样的dp:设\(f_{i,j}\)表示到了第\(i\)个数,前面有......
  • C语言之冒泡排序
    #include<stdio.h>voidbubble_sort(intarr[],intsz){//确定冒泡排序的趟数inti=0;for(i=0;i<sz-1;i++){intflag=1;//假设这一趟冒泡排序已经有......
  • 数组部分基础&冒泡排序
    数组基础知识 1.数组的创建格式:变量(数组)类型变量(数组)名=变量(数组)值int[]nums;//声明一个数组nums=newint[10];//创建一个数组int[]nums=new......
  • 冒泡排序法
    voidBubbleSort(ints[],intn){//函数参数:数组与数组大小 inti,j,temp; for(i=0;i<n-1;i++)//从0开始进行n-1轮排序 {......
  • 随机数的生成+冒泡排序法
     大家好呀,今天要给大家带来的是随机数的生成和冒泡排序法结合的知识点。首先随机数的生成,随机数顾名思义就是由电脑随机产生的数字,如果每次都由人工输入数字的话会很麻烦,......