day05 数组 排序
来源:互联网 发布:淘宝上怎么买氰化钾 编辑:程序博客网 时间:2024/06/10 11:53
#pragma mark-数组
//变量实际上就是一个容器,数组也是一个容器,,这个容器可以存储更多的内容。
//1.数组属于构造类型
//2.具有相同数据类型的成员组成一组数组。
//3.存储不同类型的数组有对应的名称,如:iOS班,安卓版,
//同理,整数类型:数组中的成员都是整数,浮点型数组,数组中的成员是浮点型。
//4.数组是由多个成员组成而成,每个成员被称为数组元素。
//定义数组类型:
//类型修饰符数组名【常量表达式】={值1,值2,值3};
//2.[]中设置数组中元素的个数,即数组的存储空间,只是常量表达式,不能是变量表达式,
//3.初始值之间使用‘,’间隔。
//方式1
//定义整数数组,数组中存储3个元素:1,2,3
//int a[3]={1,2,3};
//方式2没有赋值的元素,自动设置初始值为0;
//int a[5]={3,6,7};
//方式3
//int c[5]={0};
//方式4
//int c[]={7,5,3,8};
//误区:
//1.指定的数组元素个数,<设置初始的数量大于指定元素个数>
//int e[3]={1,2,3,4};
//2.既没有指定元素个数,也没有赋初值。
//int f[]={0};
//定义数组后,数组的存储空间是连续的。
//数组的存储空间:元素个数*元素占用的字节
//printf("%lu\n",sizeof(a));
//访问数组元素
//浮点型数组:
//float array[5]={1,2,5.2,3.6};
//字符型数组
// char a1[6]={'i','p','h','o','n','e'};
// char a2[6]="iPhone";
/*
1.不能一次整体调用整数数组全部元素的值,基本数据类型变量中值存储一个数据,数组中存储多个数据,不能通过数组变量调用所有的数组元素
2.访问数组元素:使用下标实现数组名【下标】;
3.下标:数组元素在数组中的序号,数组中的元素是有序的。每个元素都有序号,序号从0开始递增,最后一个元素的序号是n-1,n表示数组元素的个数。
4.下标必须是整型常量
*/
//遍历数组
//按照顺序,从数组的第一个元素开始访问,访问到最后一个元素结束
//使用for循环实现数组访问
//循环和数组的关系很好
//int age[5]={15,18,14,16,9};
// for (int i=0; i<5; i++) {
// printf("age=%d\n",age[i]);
// }
// 反向遍历
//按照从后面向前的顺序,输出数组元素
// for (int i=4; i>=0; i--) {
// printf("age=%d\n",age[i]);
// }
//修改数组元素
//根据数组下标确定需要修改数组元素
//遍历数组
// int array[]={1,2,3,4,5};
// for (int i=0; i<5; i++) {
// printf("%2d",array[i]);
// }
// printf("\n-------修改后--------\n");
// array[0]=8;
// array[3]=6;
// for (int i=0; i<5; i++) {
// printf("%2d",array[i]);
// }
//越界:
//1.使用数组下标时,超出下标范围
// int e[3]={1,2,3,4};
// printf("%d",e[3]);
//2.数组越界很危险,一旦越界,即访问了不属于数组的存储空间
//3.编译器不会检测数组元素下标的越界,因此操作数组是必须保证没有越界。
//注意事项:
//1.定义数组和数组元素
//2.数组作为一个整体不可以直接参与运算
//练习定义一个具有20个元素的整形数据,每个元素的取值范围是【30,70】之间,求数组元素的和
// int a[20]={0};
// int sum=0;
// for (int i=0; i<20; i++) {
// a[i]=arc4random()%(70-30+1)+30;
// sum +=a[i];
// }
// printf("sum=%d",sum);
//练习2:复制一个数组,即2个数组容器一样,把其中一个数组中的元素复制到另外一个数组中。
// int array1[5]={33,55,32,64,23};
// int array2[5]={0};
// //复制数组
// for (int i=0; i<5; i++)
// {
//
// array2[i]=array1[i];
// }
// //打印
// for (int i=0; i<5; i++)
// {
// printf("%3d",array2[i]);
// }
//练习:生成2个数组,每个数组都有10个元素,元素取值范围【20,40】之间,数组对应元素相加,放到另外一个数组中。
// int array1[10]={0};
// int array2[10]={0};
// int array3[10]={0};
// printf("--------array1----------\n");
// for (int i=0; i<10; i++) {
// array1[i]=arc4random()%(40-20+1)+20;
// printf("%3d",array1[i]);
// }
// printf("\n--------array2----------\n");
// for (int i=0; i<10; i++) {
// array2[i]=arc4random()%(40-20+1)+20;
// printf("%3d",array2[i]);
// }
// printf("\n--------array3---------\n");
// for (int i=0; i<10; i++) {
// array3[i]=array1[i]+array2[i];
// printf("%3d",array3[i]);
// }
#pragma mark-数组排序 Sort
/*
冒泡排序的规律有2种:升序(小-大),降序(大到小)
//排序的基本思路:每次将相邻的2个数进行比较,按照升序或者降序的顺序进行交换,直到所有的数字顺序全部正确。
//排序:
//原始数据:28 36 19 2 23
第一趟:
第一次:28 36 19 2 23
第二次:28 19 36 2 23
第三次:28 19 2 36 23
第四次:28 19 2 23 36
第二趟:
第一次:19 28 2 23 36
第二次:19 2 28 23 36
第三次:19 2 23 28 36
第三趟:
第一次:2 19 23 28 36
第二次:2 19 23 28 36
第四趟:
第一次:2 19 23 28 36
//规律:n个元素比较n-1,次数等于数组个数-趟数
*/
// int array[5]={28,36,19,2,23};
// for (int i=0; i<5-1; i++)
// {
// for (int j=0; j<5-1-i; j++)
// {
// if (array[j]>array[j+1])
// {
// int temp=array[j];
// array[j]=array[j+1];
// array[j+1]=temp;
// }
// }
// }
// for (int i=0; i<5; i++) {
// printf("%3d",array[i]);
// }
//随机产生10个【20,40】排序,升序
int array[10]={0};
//随机数
for (int i=0; i<10; i++) {
array[i]=arc4random()%21+20;
printf("%3d",array[i]);
}
//排序
for (int i=0; i<10-1; i++) {
for (int j=0; j<10-1-i; j++) {
if (array[j]>array[j+1]) {
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
printf("\n排序后\n");
for (int i=0; i<10; i++) {
printf("%3d",array[i]);
}
//变量实际上就是一个容器,数组也是一个容器,,这个容器可以存储更多的内容。
//1.数组属于构造类型
//2.具有相同数据类型的成员组成一组数组。
//3.存储不同类型的数组有对应的名称,如:iOS班,安卓版,
//同理,整数类型:数组中的成员都是整数,浮点型数组,数组中的成员是浮点型。
//4.数组是由多个成员组成而成,每个成员被称为数组元素。
//定义数组类型:
//类型修饰符数组名【常量表达式】={值1,值2,值3};
//2.[]中设置数组中元素的个数,即数组的存储空间,只是常量表达式,不能是变量表达式,
//3.初始值之间使用‘,’间隔。
//方式1
//定义整数数组,数组中存储3个元素:1,2,3
//int a[3]={1,2,3};
//方式2没有赋值的元素,自动设置初始值为0;
//int a[5]={3,6,7};
//方式3
//int c[5]={0};
//方式4
//int c[]={7,5,3,8};
//误区:
//1.指定的数组元素个数,<设置初始的数量大于指定元素个数>
//int e[3]={1,2,3,4};
//2.既没有指定元素个数,也没有赋初值。
//int f[]={0};
//定义数组后,数组的存储空间是连续的。
//数组的存储空间:元素个数*元素占用的字节
//printf("%lu\n",sizeof(a));
//访问数组元素
//浮点型数组:
//float array[5]={1,2,5.2,3.6};
//字符型数组
// char a1[6]={'i','p','h','o','n','e'};
// char a2[6]="iPhone";
/*
1.不能一次整体调用整数数组全部元素的值,基本数据类型变量中值存储一个数据,数组中存储多个数据,不能通过数组变量调用所有的数组元素
2.访问数组元素:使用下标实现数组名【下标】;
3.下标:数组元素在数组中的序号,数组中的元素是有序的。每个元素都有序号,序号从0开始递增,最后一个元素的序号是n-1,n表示数组元素的个数。
4.下标必须是整型常量
*/
//遍历数组
//按照顺序,从数组的第一个元素开始访问,访问到最后一个元素结束
//使用for循环实现数组访问
//循环和数组的关系很好
//int age[5]={15,18,14,16,9};
// for (int i=0; i<5; i++) {
// printf("age=%d\n",age[i]);
// }
// 反向遍历
//按照从后面向前的顺序,输出数组元素
// for (int i=4; i>=0; i--) {
// printf("age=%d\n",age[i]);
// }
//修改数组元素
//根据数组下标确定需要修改数组元素
//遍历数组
// int array[]={1,2,3,4,5};
// for (int i=0; i<5; i++) {
// printf("%2d",array[i]);
// }
// printf("\n-------修改后--------\n");
// array[0]=8;
// array[3]=6;
// for (int i=0; i<5; i++) {
// printf("%2d",array[i]);
// }
//越界:
//1.使用数组下标时,超出下标范围
// int e[3]={1,2,3,4};
// printf("%d",e[3]);
//2.数组越界很危险,一旦越界,即访问了不属于数组的存储空间
//3.编译器不会检测数组元素下标的越界,因此操作数组是必须保证没有越界。
//注意事项:
//1.定义数组和数组元素
//2.数组作为一个整体不可以直接参与运算
//练习定义一个具有20个元素的整形数据,每个元素的取值范围是【30,70】之间,求数组元素的和
// int a[20]={0};
// int sum=0;
// for (int i=0; i<20; i++) {
// a[i]=arc4random()%(70-30+1)+30;
// sum +=a[i];
// }
// printf("sum=%d",sum);
//练习2:复制一个数组,即2个数组容器一样,把其中一个数组中的元素复制到另外一个数组中。
// int array1[5]={33,55,32,64,23};
// int array2[5]={0};
// //复制数组
// for (int i=0; i<5; i++)
// {
//
// array2[i]=array1[i];
// }
// //打印
// for (int i=0; i<5; i++)
// {
// printf("%3d",array2[i]);
// }
//练习:生成2个数组,每个数组都有10个元素,元素取值范围【20,40】之间,数组对应元素相加,放到另外一个数组中。
// int array1[10]={0};
// int array2[10]={0};
// int array3[10]={0};
// printf("--------array1----------\n");
// for (int i=0; i<10; i++) {
// array1[i]=arc4random()%(40-20+1)+20;
// printf("%3d",array1[i]);
// }
// printf("\n--------array2----------\n");
// for (int i=0; i<10; i++) {
// array2[i]=arc4random()%(40-20+1)+20;
// printf("%3d",array2[i]);
// }
// printf("\n--------array3---------\n");
// for (int i=0; i<10; i++) {
// array3[i]=array1[i]+array2[i];
// printf("%3d",array3[i]);
// }
#pragma mark-数组排序 Sort
/*
冒泡排序的规律有2种:升序(小-大),降序(大到小)
//排序的基本思路:每次将相邻的2个数进行比较,按照升序或者降序的顺序进行交换,直到所有的数字顺序全部正确。
//排序:
//原始数据:28 36 19 2 23
第一趟:
第一次:28 36 19 2 23
第二次:28 19 36 2 23
第三次:28 19 2 36 23
第四次:28 19 2 23 36
第二趟:
第一次:19 28 2 23 36
第二次:19 2 28 23 36
第三次:19 2 23 28 36
第三趟:
第一次:2 19 23 28 36
第二次:2 19 23 28 36
第四趟:
第一次:2 19 23 28 36
//规律:n个元素比较n-1,次数等于数组个数-趟数
*/
// int array[5]={28,36,19,2,23};
// for (int i=0; i<5-1; i++)
// {
// for (int j=0; j<5-1-i; j++)
// {
// if (array[j]>array[j+1])
// {
// int temp=array[j];
// array[j]=array[j+1];
// array[j+1]=temp;
// }
// }
// }
// for (int i=0; i<5; i++) {
// printf("%3d",array[i]);
// }
//随机产生10个【20,40】排序,升序
int array[10]={0};
//随机数
for (int i=0; i<10; i++) {
array[i]=arc4random()%21+20;
printf("%3d",array[i]);
}
//排序
for (int i=0; i<10-1; i++) {
for (int j=0; j<10-1-i; j++) {
if (array[j]>array[j+1]) {
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
printf("\n排序后\n");
for (int i=0; i<10; i++) {
printf("%3d",array[i]);
}
return 0;
0 0
- day05 数组 排序
- 数组day05
- day05(数组+二维数组)
- day05(数组)
- Java-day05数组
- Day05 --二维数组
- day05<Java语言基础--数组>
- day05
- Day05
- day05
- day05
- day05
- day05
- day05
- day05
- day05
- day05
- day05
- 系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想
- Android(七) Handler、多线程、buddle
- 【Android】AndroidStudio上传代码到SVN及从SVN中检出代码
- 取给定正整数的指定bit位开始的指定长度的数据
- centos6.5 安装 MySQL5.7
- day05 数组 排序
- nginx取资源要用get方式,post会失败
- Spark SQL 官方文档-中文翻译
- ROS学习笔记(三)::RVIZ::wiki::translation::catkin:一:Creating a workspace for catkin
- pythonchallenge(0-9)
- 08-2 UISwitch and UIStepper
- 38 用break和continue改变流程 课后
- DataSet之增删改查操作(DataGridView绑定)
- python os.path模块