C程序一维数组最全的12中应用[FOR 初学者]

来源:互联网 发布:淘宝店铺首页广告词 编辑:程序博客网 时间:2024/05/19 11:16

一维数组最常见的应用:

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]);

    }

}


0 0