数组查找方法

                                       数组中查找问题

1.数组中查找最大值:int Max_value(int arr[],int n)

   方法:定义 int Max_value(int arr[],int n)的函数,定义Max_value = arr[0]; 再去循环n-1               次,利用if选择语句找出最大值,并给函数返回最大值,即为所找元素。

int Max_value(int arr[], int n)

{

    int Max_value = arr[0];

    for(int i = 1; i<n; ++i)

    {

        if(arr[i] > Max_value)

            Max_value = arr[i];

    }

    return Max_value;

}

2.数组中查找最小指:int Min_vallue(int arr[],int n)

 方法:定义一个int Min_vallue(int arr[],int n)的函数,再去循环n-1次,利用if选     择语句找出最小值,并给函数返回给最小值,即为所找元素。

int Min_value(int arr[], int n)

{

    int Min_value = arr[0];

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

    {

        if (Min_value > arr[i])

            Min_value = arr[i];

    }

    return Min_value;

}

3.数组中查找第二大元素:int Sec_value(int arr[],int n)

  方法:定义int Sec_value(int arr[],int n)的函数,

      int Max_value = arr[0];

      int Sec_value = arr[1];int i = 2;2 开始到n-1循环结束,循环中使用                       选择语句if进行判断

int Sec_value(int arr[], int n)

{

    int Max_value = arr[0];

    int Sec_value = arr[1];

 

 

    for (int j=2; j<n; ++j)

    {

        if(arr[j] > Max_value)

        {

            Sec_value = Max_value;

            Max_value = arr[j];

        }

        elseif (arr[j] > Sec_value)

        {

            Sec_value = arr[j];

        }

    }

 

    return Sec_value;

}

 

4.数组中元素排序:void Sort_arr_swap(int arr[],int n)

  a.方法:定义一个void Sort_arr_swap(int arr[],int n)是一个void类型的函数,两        两相找,int i=0 循环 n-1趟,每趟循环中在循环比较for(int j=0; j<n-        1-i; ++i),通过if(arr[i]>arr[i++])选择语句选择排序,用临时变量temp        可以交换两数位子,最后arr[]已经排好顺序了。

void Sort_arr_swap(int arr[], int n)

{

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

    {

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

        {

            if (arr[j] > arr[j+1])

            {

                int temp = arr[j];

                arr[j] = arr[j+1];

                arr[j+1] = temp;

            }

 

 

        }

    }

}

     b.方法:定义一个void Sort_arr_temp(int arr[],int n),循环n-1趟,先定     义临时变量int temp = arr[0]int j = 0 ;每趟循环中用if选择语句进行判     断。

    if (temp > arr[j+1])

    {

      arr[j] = arr[j+1];

    }

    else

   {

      arr[j] = temp; //先退出最大的值的位子,往前退一位,即把temp的值就给                 //了arr[j];

      temp = arr[j+1]; //然后在的arr[j+1]的值,赋值给temp,即temp的值就                     //是arr[j+1];先退在赋

 

     }

       每一趟循环结束就是arr[j] = temp;

 

void Sort_arr_temp(int arr[], int n)

{

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

    {

        int temp = arr[0];

        int j=0;

        for (; j<n-1-i; ++j)

        {

            if(temp > arr[j+1])

            {

                arr[j] = arr[j+1];

            }

            else

            {

                arr[j] = temp;

                temp = arr[j+1];

            }

        }

        arr[j] = temp;

 

    }    

 

}

5.在数组中查找关键字:Find_arr_key(inr arr[],int i, int key)

  a.方法:定义int Find_arr_key(inr arr[],int i, int key),循环n-1次,每次          循环判断ifarr[i] == key)相等return i;不相等继续循环,循环完了还        不相等 return -1

int Find_arr_key(int arr[],int n, int key)

{

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

    {

        if (arr[i] == key)

            return i;

    }

    return -1;

}

   b.方法:定义int Binary_search_key(int arr[],inr i, int key),先定义一个         低位和高位。

   int low = 0;

   int high = n-1;

   在循环whilelow <= high,循环中定义int mid = (low+high)/2

   再用if选择语句判断 return mid,跳出循环还没找到 return -1使用二分法前提    是先排好顺序。

ifkey >arr[mid]

{

low = mid+1;

}

else if(key < arr[mid])

{

high = mid-1;

}

else

{

return mid;

}

 

int Binary_search_key(int arr[], int n, int key)

{

    int low = 0;

    int high =n-1;

    

    while (low <=high)

    {

        int mid =(low+high)/2;

        if (key > arr[mid])

        {

            low = mid +1;

        }

        elseif(key < arr[mid])

        {

            high = mid-1;

        }

        else

        {

            return mid;

        }

    }

    return -1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值