1.首先若使用sort()函数直接来进行排序的话,则使用的二维数组应利用 vector< vector<int> > totalnum;这样的来定义二维数组
首先将数据压入到一个一维数组 vector<int> nums;中之后将nums压入到totalnum中即可完成二维数组数据的添加
首先定义好大小,如 规定大小为 4 行 3列
//之前规定了大小为 4 行 3 列vector<vector<int> totalnum;vector<int> nums;for(int i=0;i<4;i++){for(int j=0;j<3;j++){int n;cin>>n;nums.push_back(n); //得到每一行的数据}sort(nums.begin(),nums.end()); //直接利用 #include <algorithm> 的函数 sort//这种方法是 从左到右 依次 变大//sort(nums.begin(),nums.end(),greater<int>()); //这种是依次变小totalnum.push_back(nums); //将一个一维数组添加到其中nums.clear(); //将这一次的数据清空}
//这样就完成了对每一行的排序,直接就是输入的时候就进行了排序,当然可以选择,先输入后,再排序,也 //就将输入语句 cin>>n 删除即可
//而若是想指定某一行的话,可以在排序sort这里加上一个if如:if(i==想要排序的行数){ sort(nums.begin(),nums.end());}
以上便是直接使用提供的库函数sort来进行的对 行 进行的排序 ,而针对每一列,如 a[0][1] ,a[1][1],a[2][1].. 即是对第二列进行排序的数字
为了方便,所以若进行列排序的话,可以使用 int a[4][3]这样的方式定义二维数组来进行排序
其实就是把 列数给固定住,然后对行数进行循环即可,如下面即是对 第 0列进行的排序,当然是可以根据用户需求而改的,当固定住后,便可直接使用冒泡排序的经典做法,一套常规操作即可。
for(int j=0;j<4-1;j++){// cout<<a[1][j];//现在这个就是个一维数组for(int k=0;k<4-1-j;k++){if(a[k][0]<a[k+1][0]){int temp = a[k][0];a[k][0]=a[k+1][0];a[k+1][0] = temp; //对 第 0 列进行排序 }}}
而针对行排序其实和这个列排序类似,只是行排序应该是固定住 行数,而不断的循环 列数,最后使用同样的冒泡排序即可,下方给了做成函数 sortRow,这样的话就便于循环使用该函数了
void sortRow(int a[4][3] , int m) //输入对几行进行排序
{ for(int j=0;j<3-1;j++){for(int k=0;k<3-1-j;k++){if(a[m][k]>a[m][k+1]){int temp = a[m][k];a[m][k]=a[m][k+1];a[m][k+1] = temp;}}}
总的来说,对于行排序的话,用库中提供的vector来创建二维数组,然后进行特定行的排序,个人感觉比较容易写,而且在一些笔试的场景下,如果一下子不能快速反应出那些排序的方法,而慢慢的推什么冒泡等排序方法,那么时间可不等人,所以若是可以利用vector的情况下,使用sort函数也不失为一种好的方法。
当然其他的排序方法也应该将其掌握,毕竟有时会问那些排序方法的各个特性。