数组排序与二维数组

//
//  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;
//}

//12 34 5 6 7


//int main(int argc,const char *argv[])
//{
//    int a[100]={};
//    int cnt = 0;//统计输入数组元素个数
//    for (int i=0; i<100; i++) {
//        scanf("%d", &a[i]);
//        cnt++;
//        if (getchar()=='\n') {
//            break;
//        }
//    }
//    printf("cnt = %d\n", cnt);
//    return 0;
//}


//int main(int argc,const char *argv[])
//{
//    char str[100]={};
//    int cnt=0;
//    for (int i=0; i<100; i++) {
//        //scanf("%c", &str[i]);
//        str[i]=getchar();
//        if (str[i]=='\n') {
//            str[i]='\0';
//            break;
//        }
//        cnt++;
//    }
//    printf("cnt = %d\n", cnt);
//    return 0;
//}

 

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