C语言_数组与排序
2016-02-29 09:32
330 查看
1、数组定义
数组:一组有序数据的集合。
//定义一个长度为5的整形数组
//数组里存储的是5个int类型的变量
int arr[5];
int //数组的数据类型
arr //数组的名字
5 //数组的长度
2、数组下标
数组的下标从0开始,到n-1结束(n是数组长度)。
int arr[5];
0
1
2
3
4
3、数组元素
数组里存储的每一个变量都称为数组的一个元素。
int arr[5];
arr[0] = 5;
arr[1]
arr[2]
arr[3]
arr[4]
4、数组赋值
1)初始化
int arr[5];
//未初始化的数组,每个元素的值默认是随机值;
int arr[5] = {1,2,3,4,5}; //完全初始化
int arr[5] = {1,2,3}; //部分初始化
//部分初始化中,未初始化的元素默认值是0;
int arr[] = {2,3,4,5,6}; //完全初始化的一种
//数组的长度是初始化中元素的个数;
int arr[5] = {};
//数组中的每个元素值都为0;
int arr[]; //错误的定义——未指明数组长度
int arr
; //错误的定义——定义数组必须指明长度,不可以在[]里写变量。
int n;
scanf(“%d”,&n);
int arr
;
编译:静态的检查语法错误
运行:动态的检查逻辑错误
//数组的长度是在编译阶段分配的;
//scanf输入是在运行阶段进行的;
2)赋值
//数组的赋值需要对每个元素分别赋值;
int arr[5];
arr[0] = 3;
arr[1] = 4;
arr[2] = 5;
arr[3] = 6;
arr[4] = 7;
arr[5] = {1,2,3,4,5}; //错误的赋值
定义一个长度为6的整型数组,通过键盘输入分别给数组每个元素赋值,求所有元素的和,并输出。
5、排序
1)冒泡排序
排序规则(升序):数组里相邻元素依次两两比较,如果后面元素值比前面元素值小,则交换两元素值;比较结束,最大的元素值会沉底,一轮排序结束。
后续每一轮排序规则都按第一轮排序规则排,但是已经排好序的元素不再参与排序。
//长度为n的数组,只需要排序n-1轮
4 5 8 6 3
4 5 6 3 8 一轮排序结果
4 5 3 6 8 二轮排序结果
4 3 5 6 8 三轮排序结果
3 4 5 6 8 四轮排序结果
3 4 5 6 8 五轮排序结果
冒泡排序DEMO
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
int arr[5] = {4, 5, 8, 6, 3};
int temp;
//升序排列
//外层循环控制排序的轮数
for (int i = 0; i < 4; i++)
{
//内层循环控制每一轮的排序结果
for (int j = 0; j < 5-i-1; j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (int k = 0; k < 5; k++)
{
printf("%d ",arr[k]);
}
printf("\n");
}
return 0;
}
数组:一组有序数据的集合。
//定义一个长度为5的整形数组
//数组里存储的是5个int类型的变量
int arr[5];
int //数组的数据类型
arr //数组的名字
5 //数组的长度
2、数组下标
数组的下标从0开始,到n-1结束(n是数组长度)。
int arr[5];
0
1
2
3
4
3、数组元素
数组里存储的每一个变量都称为数组的一个元素。
int arr[5];
arr[0] = 5;
arr[1]
arr[2]
arr[3]
arr[4]
4、数组赋值
1)初始化
int arr[5];
//未初始化的数组,每个元素的值默认是随机值;
int arr[5] = {1,2,3,4,5}; //完全初始化
int arr[5] = {1,2,3}; //部分初始化
//部分初始化中,未初始化的元素默认值是0;
int arr[] = {2,3,4,5,6}; //完全初始化的一种
//数组的长度是初始化中元素的个数;
int arr[5] = {};
//数组中的每个元素值都为0;
int arr[]; //错误的定义——未指明数组长度
int arr
; //错误的定义——定义数组必须指明长度,不可以在[]里写变量。
int n;
scanf(“%d”,&n);
int arr
;
编译:静态的检查语法错误
运行:动态的检查逻辑错误
//数组的长度是在编译阶段分配的;
//scanf输入是在运行阶段进行的;
2)赋值
//数组的赋值需要对每个元素分别赋值;
int arr[5];
arr[0] = 3;
arr[1] = 4;
arr[2] = 5;
arr[3] = 6;
arr[4] = 7;
arr[5] = {1,2,3,4,5}; //错误的赋值
定义一个长度为6的整型数组,通过键盘输入分别给数组每个元素赋值,求所有元素的和,并输出。
5、排序
1)冒泡排序
排序规则(升序):数组里相邻元素依次两两比较,如果后面元素值比前面元素值小,则交换两元素值;比较结束,最大的元素值会沉底,一轮排序结束。
后续每一轮排序规则都按第一轮排序规则排,但是已经排好序的元素不再参与排序。
//长度为n的数组,只需要排序n-1轮
4 5 8 6 3
4 5 6 3 8 一轮排序结果
4 5 3 6 8 二轮排序结果
4 3 5 6 8 三轮排序结果
3 4 5 6 8 四轮排序结果
3 4 5 6 8 五轮排序结果
冒泡排序DEMO
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
int arr[5] = {4, 5, 8, 6, 3};
int temp;
//升序排列
//外层循环控制排序的轮数
for (int i = 0; i < 4; i++)
{
//内层循环控制每一轮的排序结果
for (int j = 0; j < 5-i-1; j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (int k = 0; k < 5; k++)
{
printf("%d ",arr[k]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- C语言_循环语句
- C++ Super-FAQ 『Deconstructor』
- C语言_运算符的优先级
- [c++]win下utf8源文件编译运行后乱码,codeblocks编辑器
- C++编写安全OCX,IE不弹出安全提示
- c++在VS2010编译的程序在XP系统托盘气泡提示不成功解决办法
- C/C++: short , int , long , long long数据类型选用
- C++多态性理解
- C++多线程操作(火车售票系统线程同步)
- c++中信息隐藏的实现
- c/c++ (void) var语句的作用与ignore_unused的对比
- c++面试笔试集锦
- list和vector的区别
- C++多线程socket系统新编
- USACO Dual Pal 4000 indromes 解题日志
- 从C++转向java——5、数组
- c语言编程中%g是什么格式
- USACO Palindromic Squares 解题日志
- C语言字符串操作总结大全(超详细)
- 【C++】笨鸟起飞——开始我的C++学习之路