数组排序与二维数组

//
//  main.c
//  数组排序与二维数组
//
//  Created by zhangxueming on 15/6/1.
//  Copyright (c) 2015年 zhangxueming. All rights reserved.
//

#include <stdio.h>

//冒泡排序(从小到大)
//9 7 8 5 3 --> 3 5 7 8 9
//第一次排序
//7 9 8 5 3
//7 8 9 5 3
//7 8 5 9 3
//7 8 5 3 9

//第二次排序
//7 8 5 3 9
//7 5 8 3 9
//7 5 3 8 9

//第三次排序
//5 7 3 8 9
//5 3 7 8 9

//第四次排序
//3 5 7 8 9
#define LEN  5

//int main(int argc, const char * argv[]) {
//    int a[LEN]={};
//    //输入数组
//    for (int i=0; i<LEN; i++) {
//        scanf("%d", &a[i]);
//    }
//    //冒泡排序
//    for (int i=0; i<LEN-1; i++) {
//        for (int j=0; j<LEN-i-1; j++) {
//            if (a[j]>a[j+1]) {
//                int temp= a[j];
//                a[j]=a[j+1];
//                a[j+1]=temp;
//            }
//        }
//    }
//    //遍历输出
//    for (int i=0; i<LEN; i++) {
//        printf("%d ", a[i]);
//    }
//    printf("\n");
//    return 0;
//}

//选择排序
//9 7 8 5 3   k=4   a[k] a[i]

//第一次排序
//3 7 8 5 9

//第二次排序
//3 5 8 7 9

//第三次排序
//3 5 7 8 9

//第四次排序
//3 5 7 8 9


//int main(int argc, const char *argv[])
//{
//    int a[LEN]={};
//    //输入数组
//    for (int i=0; i<LEN; i++) {
//        scanf("%d", &a[i]);
//    }
//    //选择排序
//    for (int i=0; i<LEN-1; i++) {
//        int k=i;//记录最小值下标
//        for (int j=i+1; j<LEN; j++) {
//            if (a[k]>a[j]) {
//                k=j;
//            }
//        }
//        if (k!=i) {
//            int temp = a[k];
//            a[k]=a[i];
//            a[i]=temp;
//        }
//    }
//    //输出数组
//    for (int i=0; i<LEN; i++) {
//        printf("%d ", a[i]) ;
//    }
//    printf("\n");
//    return 0;
//}

//插入排序

//9 7 8 5 3  int temp = 7;
//第一次排序
//9 9 8 5 3
//7 9 8 5 3

//第二次排序  temp = 8;
//7 9 9 5 3
//7 8 9 5 3

//第三次排序 temp = 5;
//7 8 9 9 3
//7 8 8 9 3
//7 7 8 9 3
//5 7 8 9 3

//第四次排序 temp = 3;
//5 7 8 9 9
//5 7 8 8 9
//5 7 7 8 9
//5 5 7 8 9
//3 5 7 8 9

//int main(int argc,const char *argv[])
//{
//    int a[LEN]={};
//    for (int i=0; i<LEN; i++) {
//        scanf("%d", &a[i]);
//    }
//    //插入排序
//    for (int i=0; i<LEN-1; i++) {
//        int temp = a[i+1];
//        int j=i;
//        //控制移位
//        while (a[j]>temp && j>=0) {
//            a[j+1]=a[j];
//            j--;
//        }
//        //插入元素
//        a[j+1]=temp;
//    }
//    for (int i=0; i<LEN; i++) {
//        printf("%d ", a[i]);
//    }
//    printf("\n");
//    
//    return 0;
//}

//int a[5]

//int a[3][4][5]

//二维数组:由一维数组作为元素构成的一维数组

//int a[3][4];
//a[0] a[1] a[2] 是由4个int类型元素构成的数组

//二维数组的初始化

//int main(int argc,const char *argv[])
//{
//    int a[3][2]={1,[2][0]=3,4};
//    for (int i=0; i<3; i++) {
//        for (int j=0; j<2; j++) {
//            printf("%d ", a[i][j]);
//        }
//        printf("\n");
//    }
//    return 0;
//}

//int main(int argc, const char *argv[])
//{
//    int a[3][4]={{1,2,3,4},
//                { 5,6,7,8},
//                { 9,10,11,12}};
//    
//    for (int i=0; i<3; i++) {
//        for (int j=0; j<4; j++) {
//            printf("%4d", a[i][j]);
//        }
//        printf("\n");
//    }
//    return 0;
//}

//1
//1 1
//1 2 1
//1 3 3 1
//1 4 6 4  1
//1 5 10 10 5 1

int main(int argc,const char *argv[])
{
    int a[10][10]={};
    for (int i=0; i<10; i++) {
        for (int j=0; j<=i; j++) {
            if (j==0 || j==i) {
                a[i][j]=1;
            }
            else
            {
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }
        }
    }
    for (int i=0; i<10; i++) {
        for (int j=0; j<=i; j++) {
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

posted @ 2015-06-01 17:34  sirzhang  阅读(214)  评论(0编辑  收藏  举报
AmazingCounters.com