• 往有序数组中插入数


    /*已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列*/

    #include <stdio.h>
    /**
     *  折半查找法找到需要插入的位置(下标)
     *
     *  @param p      数组
     *  @param num    需要插入的数
     *  @param length 数组元素的个数
     *
     *  @return 需要插入数组对应的下标
     */
    int arrayInsertNumber(int *p, int num,int length)
    {
        int max = length - 1;
        int min = 0;
        int mid = (max + min)/2;
        
        while (max >= min) {
            mid = (max + min)/2;
            if (num > p[mid]) {
                min = mid + 1;
            }else if (num < p[mid]) {
                max = mid - 1;
            }else {
                return mid;
            }
        }
        return mid - 1;
    }
    
    int main(int argc, const char * argv[]) {
        
        int  a[] = {1,3,5,5,7,9,10,19,20,30};
        int length = sizeof(a)/sizeof(a[0]);
        //定义数组b[]保存插入后的数据
        int b[length + 1];
        
        int num;
        printf("请输入需要插入数组中的数字
    ");
        scanf("%i",&num);
        //调用函数获取下标
        int index = arrayInsertNumber(a, num, length);
        printf("需要插入数组a[]下标为 %i 的位置
    ",index);
        
        int j = 0;
        //遍历数组a[]
        for (int i = 0; i < length ; i++) {
            //index前的数分别对应赋值给b[]
            if (i < index) {
                b[j++] = a[i];
            }
            //index对应的a[i]仍然对应赋值,把num插入到index+1的位置
            else if (i == index) {
                b[j] = a[i];
                b[++j] = num;
            }
            //原a数组index之后的数据依次后移一位
            else {
                b[++j] = a[i];
            }
        }
        printf("插入后的数组为:
    ");
        //遍历输出b[]
        for (int i = 0; i < length + 1; i++) {
            printf("%i ",b[i]);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    thinkphp5 数据库和模型
    DAO设计模式
    JSP内置对象
    JSP基础
    Head First Servlet and JSP
    Maven项目中,系统设置的CLASSPATH环境变量问题
    HTML简介
    (三)Maven使用入门之Hello World
    (一)JUnit简介
    (二)Web应用体系结构
  • 原文地址:https://www.cnblogs.com/wm-0818/p/5189381.html
Copyright © 2020-2023  润新知