7.27 学习笔记

70 阅读1分钟
  1. arr[0]就是数组的首地址,64位系统,8个字节
  2. arr代表了整个数组
  3. %p打印地址
  4. 在函数中需要再传递一个数组的长度进来
  5. 二分查找,每次排除一半
#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;
        //int mid =min+(target-arr[min])/(arr[max]-arr[min])*(max-min);
        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;
}