关于这个题当真是困扰了我好一阵子,今天终于是解决了,赶紧来给跟我一样陷入迷茫的新手指明一下方向以及点一下我的易错点,共勉!
关于这个问题我给出了两个不同的方法,一是将二维数组看成一维数组,二是运用指针的思想来简化算法。
其实这个问题一个是可能不明白如何将二维数组看成一维数组(for example me...)再一个就是指针的问题了 哈哈哈 希望我写的代码可以使你明白一些~
一、将二维数组一维化
好吧,直接上代码,里面标注了我希望读者看到的一些注意的点及批注~
#include<iostream>
using namespace std;
int main(){
int a[3][3] = { 5, 9, 4, 5, 9, 5, 4, 3, 1 };
int i, j, x, y, t;
int x1, y1, min, temp;
// 注意是选择排序
for (i = 0; i < 8;i++) // 此处将二维数组看成一维数组, 可以想象成从第一行弯弯绕绕下来的一维数组
// 注意此处是小于8
{
t = i; // 记录当前最小值的 位置
x = t/ 3; //除以列
y = t % 3; //取余列
min = a[x][y]; // 当前最小值的元素
for (j = i+1; j < 9; j++) //此处是小于9
{
x1 = j / 3;
y1 = j % 3;
if (a[x1][y1] < a[x][y]) // 每一次遍历的元素与当前最小元素相比较
{
min = a[x1][y1]; // 最先元素被不