插入排序

本文详细介绍了插入排序算法的工作原理及其实现过程。通过对比冒泡排序,突出插入排序的特点:每轮迭代后,部分数据已经是有序状态。并提供了一个C#实现的例子,演示了如何将一个无序数组变为有序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入排序

插入排序跟冒泡排序有些相似,所以有些人在使用的时候经常会混淆。

就我个人而言,区分插入排序和冒泡排序最快的方法就是:冒泡排序直到算法结束后,才知道排序完成。而插入排序则不同,外循环每增加1,就能够知道前n个数是排序好的。所以同样的无序数组,使用插入排序比较数的次数会比冒泡排序少许多。

插入排序从i=1开始,直到i<n结束(数组array[n],array[0]是第一项,array[1]是第二项),当存在array[i-1]>array[i]时,交换两者的顺序。不过由于交换的原因,可能会造成左侧已经排序好的数组再次出现无序情况,因此要继续比较,直到前i项的数组都已排序好。

public class Test
{
    private static void InsertionSort(int[] array)  
    {   
        for (int i = 1; i < array.Length; i++)  
        {
            if (array[i - 1] > array[i])
            {
                int temp = array[i];
                array[i] = array[i - 1];
                int j = i - 1;
                while (j > 0 && array[j - 1] > temp)
                {
                    array[j] = array[j - 1];
                    j--;
                }
                array[j] = temp;
            }
        }
    }
	public static void Main()
	{
	    int[] a = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
	    Console.Write("before: ");
	    for (int i = 0; i < a.Length; i++)  
                Console.Write(a[i] + " ");
            Console.WriteLine("");
            InsertionSort(a);
            Console.Write("after: ");
            for (int i = 0; i < a.Length; i++)  
                Console.Write(a[i] + " "); 
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值