c#中向一个已经排好序的数组中插入一个数,插入后还是按原来的规律排序,请问怎么实现?

如题所述

有两种方式:
一种是插入前判断这个数的插入位置,
然后将这个位置起的全部元素后移一位。

一种是在末尾插入后再排序,
显然第一种方式更快。

如果不懂如何实现,请HI我联系。追问

能加我QQ吗 ? 细说 120759632
给点代码

追答

代码早已经发给你了,你也认为很好,为何还不采纳答案???

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-31
using System;

class Program2
{
static void Main(string[] args)
{
int i;
int[] arr = new int[] { 1, 4, 6, 8, 9, 9, 11, 20 };
int data = 5;

Insert(ref arr, data); //按引用传递

for (i = 0; i < arr.Length; i++)
System.Console.WriteLine(arr[i]);

}

//在已排序数组arr中插入data,使之仍然有序
static void Insert(ref int[] arr, int data)
{
int i;
Array.Resize<int>(ref arr, arr.Length + 1); //改变数组大小,使之长度增大1

//将比data大的元素后移
for (i = arr.Length - 2; i >= 0 && data < arr[i]; i--)
{
arr[i + 1] = arr[i];
}
arr[++i] = data; //插入data
}
}
第2个回答  2011-03-31
c#的Array本身就支持排序,你不用自己写

string[] a = new string[]
{
"Egyptian",
"Indian",
"American",
"Chinese",
"Filipino",
};
Array.Sort(a);
第3个回答  2011-03-31
static void Main(string[] args)
{
int[] nums = new int[10];
Random random = new Random();

//随机数值
for (int i = 0; i < 10; i++)
{
nums[i] = random.Next(0, 100);
}

//冒泡排序 从小到大
for (int i = 0; i < 9; i++)
{
for (int j = i + 1; j < 10; j++)
{
if (nums[j] < nums[i])
{
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}

//打印到屏幕
foreach (int num in nums)
{
Console.WriteLine(num);
}

Console.Read();
}
}