有序数组中插入数据操作

C#有序数组中插入数据操作示例(InsertData.cs):已知长度为N的一维数组A 已经按照升子排好顺序,在这个有序数组随机插入一个数,使得数组A仍然有序

你要求数组,俺们用数组做,不用List。嘿嘿i,这种考试题目鬼知道他到底是想考array还是想考list

int[] source = { 1, 2, 4 };
            int a = 3;

            int[] target =new int[source.Length+1]; 
            int i = 0;
            for (;i < source.Length; i++)
            {
                if (source[i] < a)  
                    target[i] = source[i];
                else
                   break;
            }

            target[i] = a;
            
            for (; i <source.Length; i++)
            {
                target[i + 1] = source[i];
            }
            
            Console.WriteLine(string.Join(',',target));

int[] arr = {1,5,7,9,11,20};
int i = 15;
arr = arr.Concat(new int[] { i }).OrderBy(x => x).ToArray();

以下内容部分参考ChatGPT模型:


首先,我们可以使用二分查找的思路来找到插入位置。具体实现如下:

public static void InsertData(int[] A, int n, int data)
{
    int left = 0;
    int right = n - 1;
    int mid = 0;

    while (left <= right)
    {
        mid = (left + right) / 2;
        if (data < A[mid])
        {
            right = mid - 1;
        }
        else
        {
            left = mid + 1;
        }
    }

    // 将插入位置及其后面的元素依次后移一位
    for (int i = n - 1; i >= left; i--)
    {
        A[i + 1] = A[i];
    }

    // 插入数据
    A[left] = data;
}

使用方法:

int[] A = new int[] { 1, 3, 5, 7, 9 };
int n = 5;
int data = 4;
InsertData(A, n, data);

经过上述操作后,A 数组变为 { 1, 3, 4, 5, 7, 9 },仍然有序。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快