一维数组最常见的应用:
1.求数组中的最大值;
2.无数组中的最小值;
3.求数组中元素的累加和;
4,求数组中元素的平均值;
5.查询一个数是否在数组中包含;
6.检索某个数在数组中第一次出现的小标;
7.选择排序法;
8.冒泡排序法;
9.数组逆序;
10.产生一个指定长度和数据区间的没有重复值得数组(双色球);
11.使用二分法查找某个数在数组中的下标.
12.遍历数组;
//
// arrayApplication.h
// 一维数组的12种应用
//
// Created by 李旭杰 on 2016/11/14.
// Copyright © 2016年 李旭杰. All rights reserved.
//
#ifndef arrayApplication_h
#define arrayApplication_h
#include <stdio.h>
/**
求数组中元素的最大值
@param arr 指定数组
@param len 数组长度
@return 返回数组中的最大值
*/
int getMax(int arr[],int len);
/**
求数组中元素的最小值
@param arr 指定数组
@param len 数组长度
@return 返回数组中的最小值
*/
int getMin(int arr[],int len);
/**
求数组中元素的累加和
@param arr 指定数组
@param len 数组长度
@return 返回数组中元素的累加和
*/
int getSum(int arr[],int len);
/**
求数组中元素的平均值
@param arr 指定数组
@param len 数组长度
@return 返回数组中元素的平均值
*/
float getAvg(int arr[],int len);
/**
判断某个数是否包含指定的数
@param arr 指定数组
@param len 数组长度
@return 返回1代表包含,0代表不包含
*/
int isContaining(int arr[],int len, int keyNum);
/**
求某个数在数组中的下标
@param arr 指定数组
@param len 数组长度
@return 如果数组中包含这个数,返回元素在数组中的下标,反之则返回-1
*/
int indexIs(int arr[],int len, int keyNum);
/**
使用冒泡排序将数组中的元素进行由小到大排序
@param arr 指定数组
@param len 数组长度
*/
void bubbleSort(int arr[],int len);
/**
使用选择排序将数组中的元素进行由小到大排序
@param arr 指定数组
@param len 数组长度
*/
void selectSort(int arr[],int len);
/**
将数组元素逆序排列
@param arr 指定数组
@param len 数组长度
*/
void reversedSort(int arr[],int len);
/**
使用折半查找某个数
@param arr 指定数组
@param len 数组长度
@param keyNum 要查找的关键字
@return 返回要查找的这个数所在的数组下标
*/
int binarySearchKeyNum(int arr[],int len,int keyNum);
/**
创建一个指定范围内没有重复数值的数组
@param min 元素范围的最小值
@param max 元素范围的最大值
@param len 数组长度
@param arr 指定数组
*/
void no_repeatRandomNumber(int min, int max, int len, int arr[]);
/**
遍历数组
@param len 数组长度
@param arr 指定数组
*/
void bianLiArray(int len, int arr[]);
#endif /* arrayApplication_h */
//
// arrayApplication.c
// 一维数组的12种应用
//
// Created by 李旭杰 on 2016/11/14.
// Copyright © 2016年 李旭杰. All rights reserved.
//
#include "arrayApplication.h"
#include <stdlib.h>
/**
求数组中元素的最大值
@param arr 指定数组
@param len 数组长度
@return 返回数组中的最大值
*/
int getMax(int arr[],int len){
int max = INT32_MIN;
for (int i = 0; i < len; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
/**
求数组中元素的最小值
@param arr 指定数组
@param len 数组长度
@return 返回数组中的最小值
*/
int getMin(int arr[],int len){
int min = INT32_MAX;
for (int i = 0; i < len; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
/**
求数组中元素的累加和
@param arr 指定数组
@param len 数组长度
@return 返回数组中元素的累加和
*/
int getSum(int arr[],int len){
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum;
}
/**
求数组中元素的平均值
@param arr 指定数组
@param len 数组长度
@return 返回数组中元素的平均值
*/
float getAvg(int arr[],int len){
int sum = getSum(arr, len);
return sum * 1.0f / len;
}
/**
判断某个数是否包含指定的数
@param arr 指定数组
@param len 数组长度
@return 返回1代表包含,0代表不包含
*/
int isContaining(int arr[],int len, int keyNum){
for (int i = 0; i < len; i++) {
if (arr[i] == keyNum) {
return 1;
}
}
return 0;
}
/**
求某个数在数组中的下标
@param arr 指定数组
@param len 数组长度
@return 如果数组中包含这个数,返回元素在数组中的下标,反之则返回-1
*/
int indexIs(int arr[],int len, int keyNum){
for (int i = 0; i < len; i++) {
if (arr[i] == keyNum) {
return i;
}
}
return -1;
}
/**
使用冒泡排序将数组中的元素进行由小到大排序
@param arr 指定数组
@param len 数组长度
*/
void bubbleSort(int arr[],int len){
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 -i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/**
使用选择排序将数组中的元素进行由小到大排序
@param arr 指定数组
@param len 数组长度
*/
void selectSort(int arr[],int len){
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/**
将数组元素逆序排列
@param arr 指定数组
@param len 数组长度
*/
void reversedSort(int arr[],int len){
for (int i = 0; i < len / 2; i++) {
int temp = arr[i];
arr[i] = arr[len - 1 - i];
arr[len - 1 - i] = temp;
}
}
/**
使用折半查找某个数
@param arr 指定数组
@param len 数组长度
@param keyNum 要查找的关键字
@return 返回要查找的这个数所在的数组下标 -1表示哟啊查找的数不在数组中
*/
int binarySearchKeyNum(int arr[],int len,int keyNum){
int low = 0;
int high = len - 1;
int mid = len / 2;
int index = -1;
while (low <= high) {
mid = (low + high) ;
if (arr[mid] > keyNum) {// 将在左边进行查找
high = mid - 1;
}else if (arr[mid] < keyNum){// 将在右边进行查找
low = mid + 1;
}else{
index = mid;
break;
}
}
return index;
}
/**
创建一个指定范围内没有重复数值的数组
@param min 元素范围的最小值
@param max 元素范围的最大值
@param len 数组长度
@param arr 指定数组
*/
void no_repeatRandomNumber(int min, int max, int len, int arr[]){
for (int i = 0; i < len;) {
int num = arc4random_uniform(max - min + 1) + min;
if (!isContaining(arr, len, num)) {
arr[i] = num;
i++;
}
}
}
/**
遍历数组
@param len 数组长度
@param arr 指定数组
*/
void bianLiArray(int len, int arr[]){
for (int i= 0; i < len; i++) {
printf("%d\t",arr[i]);
}
}