问题
编写一个函数,功能是对矩阵进行处理。对于一个m*n行的矩阵,执行函数后使其每行元素的大小按照升序排列。
分析
每行元素排列就是将数组的每一行执行一次排序算法。
Java实现
对矩阵的单行进行排序,随便选一种排序算法即可
选择排序
public static int[] sort(int[] a){
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
int swap;
if (a[i] > a[j]){
swap = a[i];
a[i] = a[j];
a[j] = swap;
}
}
}
return a;
}
- 时间复杂度:O(n^2)
- 空间复杂度:O(1)
调用单行排序对矩阵排序
public static int[][] sort(int a[][]){
if (a == null || a.length == 0) return null;
for (int i = 0; i < a.length; i++) {
sort(a[i]);
}
return a;
}
测试用例
public static void main(String[] args) {
int[][] a = {{1,7,8,6,6},{1,8,6,3,4},{1,5,3,1,5}};
sort(a);
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
Go实现
冒泡排序
func BubbleSort(a []int) []int {
for true {
flag := true
for i := 0; i < len(a)-1; i++ {
if a[i] > a[i+1] {
swap := a[i]
a[i] = a[i+1]
a[i+1] = swap
flag = false
}
}
if flag {
break
}
}
return a
}
矩阵排序
func matrixSort(a [][]int) [][]int {
for i := range a{
BubbleSort(a[i])
}
return a
}