为什么是arr[j],定义的j不是对比的轮数嘛,后面为什么又可以当做数组的位置了
i表示的是目前的待排序范围,也就是从arr[1]到arr[i]之间的数据都是待排序的。而j是目前遍历到的位置。
贴出你的代码看看
arr[j]就是取arr数组的第j个
冒泡排序每轮会把最小的排到最前面,下一轮时,第一个就不需要动了,第二轮排好第二个,下一轮前两个都不需要动了
具体实现方法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[100];
int n;
cin>>n;//输入排序长度
for(int i=1;i<=n;i++) cin>>a[i];//输入排序数组
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++)
{
if(a[j]<a[i]) swap(a[i],a[j]);
}
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
一维数组arr[8]共有8个元素,下标索引0、1、2、…、7分别表示棋盘的第1、2、3、…、8行。该索引对应的值表示棋盘对应的列。例如arr[0] = 0,表示第 1 个皇后放在棋盘的第 1 行的第 1 列;arr[1] = 4 表示第 2 个皇后放在棋盘的第 2 行的第列 5 列。所以图中的 arr[8] = {0, 4, 7, 5, 2, 6, 1, 3} 能表示一种摆法。