选择排序:
void selectSort(int arr[],int len){
int temp;
//选择排序
for (int i=0; i<len-1; i++) {
for (int j=i+1; j<len; j++) {
//调换i、j的值
if (arr>arr[j]) {
temp=arr;
arr=arr[j];
arr[j]=temp;
}
}
}
}
int main(int argc, const char * argv[]){
int a[10]={31,213,23,67,98,234,26,98,90,129};
//调用selectSort函数
selectSort(a, 10);
//遍历
for (int i=0; i<10; i++) {
printf("%d\t",a);
}
return 0;
}
折半查找
int searchItem(int arr[],int len,int key){
int low=0,high=len-1,mid; //定义变量
while (low<=high) { //循环
mid=(low+high)/2; //计算mid的值
if (key>arr[mid]) { //判断
low=mid+1;
}else if (key<arr[mid]){
high=mid-1;
}else{
return mid;
}
}
return -1;
}
int main(int argc, const char * argv[]) {
int a[]={12,23,34,45,56,67,78,85,97,109};
int loc= searchItem(a, 10, 45);
printf("%d",loc);
return 0;
}
二维数组:可以看做是一个特殊的一维数组,这个一维数组的每个元素又是一个一维数组
注意事项:
1)数组名不能和变量名同名
2)数组的长度也意识常量表达式
3)数组长度可以使用宏定义
二维数组的初始化
二维数组中,第一维可以省略,第二维不可以
(1)定义同时初始化
1)int a[2][3]={{12,22,34},{1,2,3}};
2) 连续赋值 int a[2][3]={1,2,3,4,5,6};
3) 可以省略第一维 int a[][3]={1,2,3,4,5,6};
(2)先定义后初始化
二维数组遍历
int main(int argc, const char * argv[]) {
int a[3][4]={1,23,4,5,67,8,9,967,23,4,55,32};
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++) {
printf("%d\t",a[j]);
}
printf("\n");
}
return 0;
}
数组元素作为函数的参数传递的是值,变量
数组名作为函数的参数,他是一个常量,保存的是数组的首地址
字符串是位于双引号中的字符序列
在内存中以“\0”结束,所以字节比实际多一个
字符数组初始化和遍历
用字符数组保存字符串:
1)
char arr[4]={"asd"};
for (int i=0; i<4; i++) {
printf("%c\t",arr);
}
2)
for (int i=0; i<4; i++) {
printf("%c\t",arr);
} |
|