本段程序主要实现以下内容:
1、寻找出数组的最大值以及最大值在数组中的下标
2、使用冒泡排序对数组进行升序排序
3、打印排序后的数组。
上述三个功能均用函数封装。值得一提的是寻找数组最大值及其下标,因为C++中,函数返回值只能返回一个,但是这里需要返回两个值(最大值,最大值下标),因此这里考虑返回函数指针。程序如下:
int *find_max(int arr[], int arr_length)
{
static int max_value_index[] = {};
max_value_index[0] = arr[0]; // storage the maxValue
max_value_index[1] = arr[1]; // storage the maxIndex
for(int i=0; i<arr_length; i++)
{
if(arr[i] > max_value_index[0])
{
max_value_index[0] = arr[i];
max_value_index[1] = i;
}
}
return max_value_index;
}
全部程序以及运行效果如下:
#include <iostream>
using namespace std;
int *find_max(int arr[], int arr_length)
{
static int max_value_index[] = {};
max_value_index[0] = arr[0]; // storage the maxValue
max_value_index[1] = arr[1]; // storage the maxIndex
for(int i=0; i<arr_length; i++)
{
if(arr[i] > max_value_index[0])
{
max_value_index[0] = arr[i];
max_value_index[1] = i;
}
}
return max_value_index;
}
void bubbleSort(int arr[],int arr_length)
{
for(int i=0; i<arr_length-1; i++)
{
for(int j=0; j<arr_length-1-i; j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void printInfo(int arr[], int arr_length)
{
for(int i=0; i<arr_length; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main(int argc, char **argv)
{
int arr[] = {3,1,2,5,4};
int arr_length = sizeof(arr) / sizeof(arr[0]);
//1 find the maxValue and maxIndex
int *ptr1 = find_max(arr,arr_length);
cout << "maxValue = " << *ptr1 << endl;
ptr1 ++;
cout << "maxIndex = " << *ptr1 << endl;
//2 bubbleSort
bubbleSort(arr,arr_length);
//3 print arr
printInfo(arr,arr_length);
return 0;
}