简单插入排序

算法思路:

简单插入排序的思路是把一个数列分为两部分,左边是有序列,右边是无序列,每次将无序列的第一个插入到有序列的正当位置,使有序列增加一个同时无序列减少一个,当无序列的个数为零时,整个数列就排完序了。
例如将 5,4,2,3,1 调整为升序时,开始时第一个数在有序列中,第二个到第四个数在无序列中。 我们把无序列的第一个数,也就是数字4,插入到有序列中,4比5小,所以插到5前面,数列调整为4,5,2,3,1。这样数列的有序列(即4,5)增加了一个长度,无序列(即2,3,1)减少了一个长度。接着,我们重复前面的过程,将无序列的数(2,3,1)依次插入到有序列中的正确位置,整个数列就递增了。
整个过程是5,4,2,3,1→4,5,2,3,1→2,4,5,3,1→2,3,4,5,1→1,2,3,4,5

代码:
using System;

namespace Bubble_sort
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			Console.Write ("请输入您要排序的整型数列的长度: ");
			int n = int.Parse (Console.ReadLine ());
			int[] tobeSort = new int[n];
			Console.WriteLine ("请输入{0}个待排序的整数(输入一个敲一次回车): ",n);
			for (int i = 0; i < n; i++) 
			{
				tobeSort [i] = int.Parse (Console.ReadLine ());
			}
			Console.Write ("排序前: ");
			print (tobeSort);
			InsertSort (tobeSort);
			Console.Write ("排序后: ");
			print (tobeSort);

		}

		public static void InsertSort(int[] arr)
		{
			//数组下标0至i-1的元素已经递增有序
			for (int i = 1; i < arr.Length; i++) {
				if (arr [i] < arr [i - 1]) {	//这个if判断当前的数是否需要插到前面去
					int temp = arr [i];		//用temp记下当前下标为i的数,因为我们下一步就要做移动,会覆盖掉它
					int j;
					//将有序列自后往前后移一个位置,直到空出当前无序列第一个(也就是i下标的数)该插入的位置
					for (j = i-1; j >= 0 && temp<arr[j] ; j--) {
						arr [j+1] = arr [j];
					}
					arr [j + 1] = temp;	//将数插入到正确的位置
				}
				Console.Write ("第{0}次将无序列的第一个插入到有序列中的结果:",i);
				print (arr);
			}
		}
		public static void print(int[] arr){
			foreach (int num in arr) {
				Console.Write ("{0} ",num);
			}
			Console.WriteLine ();
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值