//
// 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;
//}
转载于:https://www.cnblogs.com/0515offer/p/4547145.html
相关资源:二维数组的四种排序(绝对经典)
转载请注明原文地址: https://win8.8miu.com/read-1541698.html