字符数组:是一块变量空间。可被修改!
字符串:是一块连续且同字符类型的常量空间,不可被修改!
1、系统会在字符串末尾添加\0 (无论末尾是否添加\0,都会添加\0)
二维和多维数组:
二维数组定义:类型 数组名[行][列];
空间长度:sizeof(int)*行*列
元素个数: 行*列
引用元素:需要确定哪一行哪一列的元素 数组[行][列]
注:列从0开始
排序算法:
1,冒泡排序:两两比较
char buf[]="195264387";
int i,j;
for(i=0;i<strlen(buf);i++)
{
for(j=0;j<strlen(buf)-i-1;j++)
{
if(buf[j]<buf[j+1]&&buf[j]!='\0')
{
buf[j]=buf[j]+buf[j+1];
buf[j+1]=buf[j]-buf[j+1];
buf[j]=buf[j]-buf[j+1];
}
}
}
for(i=0;i<strlen(buf);i++)
{
printf("%c",buf[i]);
}
2,插入排序:将元素分为(已排序和未排序),每次从未排序中取出第一个元素插入到已排序队列中。
#include<stdio.h>
#include<string.h>
int main()
{
int buf[]={1,7,2,6,9,5,4,3,8};
int i,j,s;
for(i=1;i<9;i++)
{
j=i;
s=buf[i];
if(buf[j]<buf[j-1])
{
while(j>0&&s<buf[j-1])
{
buf[j]=buf[j-1];
j--;
}
buf[j]=s;
}
}
for(i=0;i<9;i++)
printf("%d",buf[i]);
printf("\n");
return 0;
}
3,选择排序:每一次从未排序中选择最值,并依次存放
#include<stdio.h>
#include<string.h>
int main()
{
int buf[]={1,7,2,6,9,5,4,3,8};
int i,j,s;
for(i=1;i<9;i++)
{
j=i;
s=buf[i];
if(buf[j]<buf[j-1])
{
while(j>0&&s<buf[j-1])
{
buf[j]=buf[j-1];
j--;
}
buf[j]=s;
}
}
for(i=0;i<9;i++)
printf("%d",buf[i]);
printf("\n");
return 0;
}