`
北极的。鱼
  • 浏览: 149516 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

白话经典算法系列之二 直接插入排序

 
阅读更多

插入排序的思想如下:

1. 从第一个元素开始,认为他是有序的。

2. 取出下一个元素, 在已经排序的元素序列中从后往前扫描。

3. 如果发现已排序的中的某个元素大于新元素,那么就将该有序元素移到相爱一个位置。

4. 重复步骤3直到找到一个已排序的元素小于等于新元素。

5. 将新元素插入该位置。

6. 重复步骤2-5.

 

如下是代码:

static void Main(string[] args)
{
    int[] array = { 49, 38, 65, 97, 76, 13, 27,0,34 };
    InsertionSort(array);
    foreach (int num in array)
    {
        Console.Write(num + " ,");
    }
    Console.WriteLine();

    Console.Read();
}

public static void InsertionSort(int[] data)
{
    int count = data.Length;
    for (int i = 1; i < count; i++)
    {
        int t = data[i];
        int j = i;//这是后面无须数列的开始,下面的while即是从临界点往前扫描
        while (j > 0 && data[j - 1] > t)//内部while,每循环一次就完成一次移动
        {
            data[j] = data[j - 1];//只要前一个数大于目标数,就要让出位置
            --j;
        }
        data[j] = t;
    }
}

 

分享到:
评论
2 楼 北极的。鱼 2015-04-02  
希尔排序类似直接插入

void shellsort(int a[], int n)  
{  
    int j, gap;  
      
    for (gap = n / 2; gap > 0; gap /= 2)  
        for (j = gap; j < n; j++)//从数组第gap个元素开始  
            if (a[j] < a[j - gap])//每个元素与自己组内的数据进行直接插入排序  
            {  
                int temp = a[j];  
                int k = j - gap;  
                while (k >= 0 && a[k] > temp)  
                {  
                    a[k + gap] = a[k];  
                    k -= gap;  
                }  
                a[k + gap] = temp;  
            }  
}  
1 楼 北极的。鱼 2015-01-10  
总结:
插入排序就是选择基准点,在有序数列中从后往前扫描。

相关推荐

    MoreWindows白话经典算法之七大排序第2版(高清)

    在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。

    白话经典算法之七大排序

    对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法进行了详细的讲解

    MoreWindows白话经典算法之七大排序(高清版)

    这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯...

    MoreWindows白话经典算法之七大排序

    包括冒泡排序,直接 插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆 排序这七种常用的排序方法,

    [网盘]MoreWindows白话经典算法之七大排序第2版(高清)

    在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。

    白话经典算法

    冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结,方便大家复习,合适作为笔试面试前的复习资料

    计算机七大排序

    MoreWindows白话经典算法之七大排序 这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序

Global site tag (gtag.js) - Google Analytics