数组应用以及排序

接上回:

一、数组大小

sizeof(数组名):此函数用来求得相应数组开辟空间的大小。

例如:

二、清零函数

bzero

#include <strings.h>

void bzero(void *s, size_t n);

功能数组清零

参数s数组首地址 n:字节大小

返回值

例如:

三、字符数组

      被用来存储字符串。字符串用“   ”括起来,以   '\0'   作为结束标志,在定义元素个数时,需要把   '\0'   考虑上。

例如:

3.1 输入输出

3.1.1 输入

1)例如:

scanf函数默认遇见空格或者换行就认为赋值结束,若想支持空格可以改为:

scanf("%[^\n]",a1); //遇到换行结束

printf("%s\n",a1);

2)gets

char *gets(char *s);//支持空格输入

功能终端输入字符串

参数字符数组首地址

返回值字符数组首地址

3.1.2 输出

puts

int puts(const char *s); //自带换行功能

功能终端输出字符串

参数字符数组首地址

返回值输出字符的个数

3.2 实际元素的个数

方法一:用for循环遍历

方法二:使用 strlen函数

#include <string.h>

size_t strlen(const char *s);

功能计算字符串实际元素个数

参数字符数组首地址

返回值字符串实际元素个数

例如:

注意:sizeof与strlen的区别:

sizeof关键字strlen函数

sizeof计算元素开辟空间大小strlen计算字符串实际元素个数

sizeof计算包含'\0';strlen计算不包含'\0' 

四、冒泡排序

分析:

int a[5]={2,3,4,5,6}; //6 5 4 3 2

n比较n-1

第一轮5个数

32456

34256

34526

34562

第二轮4个数

43562

45362

45632

第三轮3个数

54632

56432

第四轮2个数

65432

例如:

将数组由小到大排序

五、选择排序

思路:

假设第一个元素最小 暂存索引分别后边每一个元素比较比较过程中如果遇到更小的索引进行存储一轮比较完后最左边元素进行交换。

例如:

int a[5]={2,5,4,3,12},min=0,t; //min暂存最小元素索引

for(int i=0;i<5-1;i++)

{

min=i; //假设最左边元素最小

for(int j=i+1;j<5;j++) //获取剩下的几个元素

{

if(a[min]>a[j]) //出现更小索引更新

min=j;

} //循环结束min本轮循环最小元素索引

//a[min] a[i] //要交换的是 最小元素 和 最左边位置

if(min!=i) //排除最左边要交换的位置=本轮最小元素位置

{

t=a[min];

a[min]=a[i];

a[i]=t;

}

}

for(int i=0;i<5;i++)

printf("%d ",a[i]);

return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值