一、基本思想
在一个无序数组中,从第一个元素开始,与后一元素进行两两比较,如果后一个元素大于或小于当前元素(大于小于自己决定),则反序(交换),使最大或者最小的元素到最后一位,再进行倒数第二位元素的判断,以此类推。
二、动图演示
三、写法思想
首先先先用一个for循环将数组中所有的数进行全部遍历,然后在内嵌数组中进行排序比较,可以采用中间量temp进行转换,也可以使用sort函数。
在程序中,主要想到两个循环,第一个for循环表示需要几轮比较,也就是n-1次比较,而内循环中就是进行两两比较了,如果需要改变位置就进行交换,反之不交换。
四、代码实现
#include<iostream>
using namespace std;
int main() {
int arr[100];//定义一个数组最多可存元素个数
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n - 1; i++) {//需要进行n-1次比较
for (int j = 0; j < n - 1 - i; j++) {//内循环判断两两相邻
if (arr[j] > arr[j + 1]) {
int t = 0;//中间变量为了进行两数相交换,也可以使用sort函数
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
for (int i = 0; i < n; i++)
cout << arr[i] << ' ';
return 0;
}
若有错误,望指正