数组中查找问题
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次,每次 循环判断if(arr[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;
在循环while(low <= high),循环中定义int mid = (low+high)/2
再用if选择语句判断 return mid,跳出循环还没找到 return -1;使用二分法前提 是先排好顺序。
if(key >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;