一、冒泡排序介绍
冒泡排序一般来说是我们最早接触到的排序算法,它的核心思想就是“比较大小,交换数字”,时间复杂度为O(n2)。
它的实现过程也非常的简单,只需要掌握循环以及判断语句的使用就可以实现。
二、实现以及详解
先展示一下代码:
//定义一个arr数组并赋值 int arr[9] = {1, 8, 5, 4, 2, 9, 7, 6, 3}; //进行冒泡排序 for (int i = 0; i < 9;i++){ for (int j = i + 1; j < 9; j++){ //冒泡排序的核心代码,这里是进行升序排序 if(arr[i] > arr[j]){ int val = arr[i]; arr[i] = arr[j]; arr[j] = val; } } } for (int i = 0; i < 9; i++) cout << arr[i] << " ";
我们使用了一个外层循环以及一个内层循环,外层循环用于遍历数组,内层循环用于排序。
我们以数组中的元素8为例,此时的i = 1,j = 2,那么对应数组中的元素就是8 和 5(因为数组下标是以0开始的)。
因为我们是要进行升序排序,所以当我们发现arr[i] > arr[j]时我们就要交换两个数的值。
这里的arr[i] = 8,arr[j] = 5,满足条件,因此我们需要交换两个数的值,但是如果我们直接让arr[i] = arr[j]的话就会发现我们无法对arr[i]进行赋值。
因此我们引入了一个中间值val,用于存储被赋值前的arr[i],也就是val = arr[i],这样的话我们就能够对arr[j]进行赋值了。
在上述中我们其实就是实现了一个““比较大小,交换数字”的过程。从而完成了升序的冒泡排序,降序就只需要将“>”改为“<”既可。
标签:arr,val,int,冒泡排序,数组,升序 From: https://www.cnblogs.com/linx000/p/17865742.html