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

冒泡排序

时间:2024-04-01 17:23:04浏览次数:19  
标签:arr int 交换 冒泡排序 循环 条件

1、基本概念

这里使用C++来实现冒泡排序法

冒泡排序法采用不停地交换彼此位置来实现,故而形象地称之为冒泡

冒泡排序主要是由两层循环组成(这里记下来的原因就是两层循环的停止条件,自己编写出了错误)。

1、外层循环:主要是用来轮询;

2、内层循环:主要用来交换位置(前提是满足if条件)

3、外层循环的条件i  < n - 1,内存循环的停止条件为j < n-i-1;

2、代码实现

 1 void BubbleSort(int arr[], int n)
 2 {
 3     for (int i = 0; i < n - 1; i++)
 4     {
 5             for (int j = 0; j < n - i - 1; j++)
 6             {
 7                     if (arr[j] > arr[j + 1]) 
 8             {
 9                             int temp = arr[j];
10                             arr[j] = arr[j + 1];
11                             arr[j + 1] = temp;
12                         }
13                  }
14          }
15 }

首先,冒泡排序是比较排序,比较次数需要n-1次,因此,外部循环条件为i < n -1;同时由于arr[j+1],不使用n-1的话,arr[j+1]就会发生越界行为(超出了数组最大数组下标);

接着,再看为什么需要减掉i呢?因为内层循环每完成一次,最大那个值(或最小那个值),就已经交换到了最后的位置,所以下次交换的时候我们就要减少一次交换已经排序好的元素,依次类推。

 

标签:arr,int,交换,冒泡排序,循环,条件
From: https://www.cnblogs.com/Zhouce/p/18108964

相关文章

  • 【C语言】冒泡排序
    一、数组越界数组越界是在数组本有的元素个数(内存)外,打印数组时,多出的数组内存,为数组越界官方含义:数组下标变量的取值超过初识定义时的大小,导致对数组元素的访问出现在数组的范围之外,C语言常见错误之一二、冒泡排序分析代码:先看主函数创建数组并初始化创建变量sz,......
  • 冒泡排序的习题全集(含答案)
    习题11.给定一个包含红色,白色和蓝色,共n个元素的数组nums,原地对他们进行排序,使得相同颜色的元素相邻,并按照共色,白色,蓝色顺序排列。我们使用整数0,1,2分别表示红色,白色,蓝色packagemaopao;importjava.util.*;publicclasschapter1{ publicstaticvoidmain(String[]ar......
  • Java - 冒泡排序
      //冒泡排序publicclassBubbleSort{ publicstaticvoidmain(String[]args){ //定义一个整型的数组 int[]array={64,34,25,12,22,11,90} bubbleSort(array); for(inti:array){ System.out.println(i+""); } } publicstaticvoidbubbl......
  • 冒泡排序和选择排序--C语言
    冒泡排序(升序):设计思想:每两个相邻的数进行比较,大的往后走详细过程:例:99,100,88,80,100,90,77,22,33,90第一遍:99与100比较,100大,继续向后走,100与88比较,100大,100与88交换一下位置,继续向后走100与80比较,100大,100与80交换一下位置,继续向后走100与100比较,相等,不需要......
  • Python基础----冒泡排序和二分查找(持续更新中)
    冒泡排序(共3个版本)在冒泡排序中,一共有3个版本,经常使用的是v3.0,v3.0版本的精彩之处就在于b=false和b=true只要把这点搞懂,那么冒泡排序就没什么难的!!!li=[5,4,7,8,2,1]#冒泡排序的v1.0版本forjinrange(len(li)-1):foriinrange(len(li)-1):......
  • qsort函数[3]---冒泡排序与qsort函数的结合
    冒泡排序与qsort函数的结合首先给大家回顾一下冒泡排序voidbubble_sort(intarr[],intsz){ //确定趟数 inti=0; for(i=0;i<sz-1;i++) { //每趟进行两两互相比较 intj=0; for(j=0;j<sz-i-1;j++) { if(arr[j]<arr[j+1]) ......
  • C语言新手经典基础题——冒泡排序
    冒泡排序:用户输入一组数,编写程序将该组数据进行从小到大的顺序进行排列。举个例子:用户输入;1413918766这一组数据,现在要将这组数据进行从小到大的程序进行排列。我们编写程序的思路如下:现将第一个数和第二个数进行比较,即14和13,13比14小,那么就将13和14进行位置的调换,13......
  • 14_学习日志_数据结构_冒泡排序_快速排序_插入排序
    #include<编织有意义的谎言,使我相信闭上眼再睁开眼时的世界是同一个>1.介绍    从后往前或者从前往后开始两两比较元素,使得最小数上浮或者最大数下沉为冒泡排序,快速排序利用分治思想,使得基准数左边都存放相对较小数,右边存放较大数,两边再按照同样的做法重复。插入排序......
  • C语言冒泡排序
            冒泡排序是一种简单的排序算法,通过重复遍历要排序的数列,依次比较两个相邻的元素,如果它们的顺序错误则交换它们。这个过程会重复进行,直到没有相邻的元素需要交换,也就是数列已经排序完成。        冒泡排序的名字来源于其工作方式,因为较小的元素会像气......
  • 冒泡排序时间复杂度分析
    冒泡排序(升序)时间复杂度分析原理:通过从前往后遍历两两对比,当前一个数大于后一个数,则交换位置,最大的数可以遍历到最右侧不断从后缩小数组范围(end--),当end到第一个元素时停止voidSwap(int*a,int*b){inttmp=*b;*b=*a;*a=tmp;}voidBubbleSort(int*arr,i......