我是编程新手,刚刚听说过排序。我完成了排序的基础知识,发现插入排序是最简单的。但事情是,我不知道它是什么!你能详细解释一下插入排序是什么以及如何实现它。 c#中的实现将更受欢迎。
非常感谢任何帮助! :)
答案 0 :(得分:1)
插入排序的算法是
int temp, j;
for (int i=1; i < vector.length; i++){
temp = vector[i];
j = i-1;
while (j >= 0 && vector[j] > temp){
vector[j + 1] = vector[j];
j--;
}
vector[j+1] = temp;
}
答案 1 :(得分:0)
插入排序比我们之前实现的算法(冒号排序和选择排序)更有效,可以对小数据集进行排序。当列表部分排序时,主要使用插入排序。我们假设第一个元素已排序。然后我们检查相邻索引的值是更小还是更大。如果值较小,我们将它插入index [0]的左侧,这意味着现在较小的值在index [0],如果它大于index [0]的原始值,那么我们得到一个2的排序列表元素。我们对相邻元素实施相同的方法。然后将其与先前的元素进行比较以创建排序列表。所以基本上 - 你最终会得到数组左侧的排序列表,并在一个阶段右侧未排序。请记住,我们返回并检查数组是否已排序 - 除非相关元素后面的数组(包括相关元素)已完全排序,否则我们不会继续前进。
这是Insertion Sort的C#实现:
class Program
{
static void Main(string[] args)
{
int i, j;
int[] unsortedarrayed = new int[] { 34, 36, 2, 7, 8, 3, 6, 5 };
for (i = 0; i < unsortedarrayed.Length; i++)
{
Console.WriteLine(unsortedarrayed[i]);
}
int[] sortedarray = InsertionSorted(unsortedarrayed);
for (i = 0; i < sortedarray.Length; i++)
{
Console.WriteLine(sortedarray[i]);
}
Console.Read();
}
public static int[] InsertionSorted(int[] unsortedarrayed)
{
for (int i = 1; i < unsortedarrayed.Length; i++)
{
int temp = unsortedarrayed[i];
int j = i - 1;
while ((j > -1) && (unsortedarrayed[j] > temp))
{
int tempo = unsortedarrayed[j + 1];
unsortedarrayed[j + 1] = unsortedarrayed[j];
unsortedarrayed[j] = tempo;
j = j - 1;
}
}
return unsortedarrayed;
}
}