- arr[0]就是数组的首地址,64位系统,8个字节
- arr代表了整个数组
- %p打印地址
- 在函数中需要再传递一个数组的长度进来
- 二分查找,每次排除一半
#include <stdio.h>
int count(int ar[], int len)
{
printf("count...");
for (int i = 0; i < len; i++)
{
printf("%d ", ar[i]);
}
}
int main()
{
int arr1[] = {1, 2, 3};
count(arr1, 3);
return 0;
}
#include<stdio.h>
int find(int arr[],int len,int target){
for(int i=0;i<len;i++){
if(arr[i]==target){
return i;
}
}
return -1;
}
int main(){
int arr[]={1,2,3,4,5,6,7,8,9,10};
int len=sizeof(arr)/sizeof(arr[0]);
int index=find(arr,len,5);
printf("%d",index);
return 0;
}
#include<stdio.h>
int find(int arr[],int len,int target){
int max=len-1,min=0;
while(max>=min){
int mid=(max+min)/2;
if(arr[mid]==target){
return mid;
}
else if(arr[mid]>target){
max=mid-1;
}
else{
min=mid+1;
}
}
return -1;
}
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d",find(arr,10,1));
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int find(int arr[], int len, int target)
{
for (int i = 0; i < len; i++)
{
if (arr[i] == target)
{
return i;
}
}
return -1;
}
int main()
{
int counter = 0;
int arr[20];
srand(time(NULL));
while (counter < 20)
{
int i = 0;
int key = rand() % 100 + 1;
if (find(arr, counter, key) == -1)
{
arr[counter] = key;
printf("%d ", arr[counter]);
counter++;
i++;
}
}
return 0;
}