题目:m*n矩阵,然后进行每行元素的升序排序。
思路分析:二维矩阵,每一行进行冒泡排序,升序。
代码如下:
#include
int shengxu(int a[2][6], int m, int n)
{
for (int i = 0; i < m; i++)//最外层循环为行数
{
int temp;
int len = 0;
for (int k = 0; k < n - 1; k++) //冒泡排序算法,外循环为对比次数。
最多对比n-1次。
{
int jiaohuan = 0;
for (int j = n - 1; j > k; j--) //每趟排序时的算法,从最后一位,依次对比到前面
{
if (a[i][j] < a[i][k])//外循环
{
temp = a[i][j];
a[i][j] = a[i][k];
a[i][k] = temp;
jiaohuan = 1;
}
}//每一趟冒泡完,冒泡排序中,外循环换下一趟对比。
len++;
if (jiaohuan == 0)
{
printf("第%d行进行了%d次排序\n", i, k + 1);
break;//此时第一行进行到k+1趟时,排序完成,结束循环,进入下一行的排序。
}
}
}
return;
}
int main()
{
int a[2][6] = { {5,6,4,3,9,1},{9,8,6,5,3,2} };
shengxu(a, 2, 6);
for (int i = 0; i < 2; i++)
{
for (int k = 0; k < 6; k++)
{
printf("%d", a[i][k]);
}
printf("\n");
}
return 0;
}
利用冒泡排序法
#include
int shengxu(int a[2][6], int m, int n)
{
for (int i = 0; i < m; i++)//最外层循环为行数
{
int temp;
int len = 0;
for (int k = 0; k < n - 1; k++) //冒泡排序算法,外循环为对比次数。
最多对比n-1次。
{
int jiaohuan = 0;
for (int j = n - 1; j > k; j--) //每趟排序时的算法,从最后一位,依次对比到前面
{
if (a[i][j] < a[i][j-1])//外循环
{
temp = a[i][j];
a[i][j] = a[i][j-1];
a[i][j-1] = temp;
jiaohuan = 1;
}
}//每一趟冒泡完,冒泡排序中,外循环换下一趟对比。
len++;
}
}
return;
}
int main()
{
int a[2][6] = { {5,6,4,3,9,1},{9,8,6,5,3,2} };
shengxu(a, 2, 6);
for (int i = 0; i < 2; i++)
{
for (int k = 0; k < 6; k++)
{
printf("%d", a[i][k]);
}
printf("\n");
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)