用C语言怎么做下面两道题

1.实现“使用冒泡排序法对10个整数进行由大到小排序。
2.将一个二维数组行和列的元素互换,存到另一个二维数组中。例如:a转换为b.
a=[ 1 4 ] b=[1 2 3]
4 5 6
2 5
3 6

//1冒泡排序
#include<stdio.h>
int main(){
    int i,j,t,a[10]={2,4,12,9,83,8,6,45,32,11};
    for(i=0;i<9;i++){
        for(j=0;j<9-i;j++){
            if(a[j]>a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(i=0;i<10;i++){
        printf("%d ",a[i]);
    }
    return 0;
}

冒泡排序,从字面上的意思就能看出来,就想空气从水底冒出来一样。在排序中,这个往上冒的过程可以分成两种,第一是大的数字上冒(结果为升序,判断的时候用),第二就是小的数字上冒(结果为降序,判断的时候用),把大或者小的数往一头赶,然后得出排序的结果。时间复杂度上,当整个数组都是反序的,那么要改变n*(n-1)/2 也就是说最坏为n的平方。