直接 插入排序算法和冒泡算法不同
直接插入排序算法的思想是把记录插入到已排序的有序表中,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//直接插入排序算法
namespace InsertSortDemo
{
internal class Program
{
//创建一个直接插入的排序方法
static void InsertSort(int[] arr)
{
for(int i =0; i<arr.Length; i++)
{
int temp = arr[i];//先取出循环的第一个元素
int j = i;
while ((j > 0) && ((arr[j-1]) > temp))
{
arr[j] = arr[j - 1];
j--;
}
arr[j] = temp;
}
}
static void Main(string[] args)
{
int[] arr = new int[]{22,4,1,78,93,24,31,9,10 };
//直接插入排序算法
Console.WriteLine("未排序之前的数组为:");
foreach(int i in arr)
{
Console.Write(i + " ");
}
Console.WriteLine();
InsertSort(arr);
Console.WriteLine("排序之后的数组为:");
foreach(int i in arr)
{
Console.Write(i + " ");
}
Console.WriteLine();
}
}
}
直接排序算法的核心代码
static void InsertSort(int[] arr)
{
for(int i =0; i<arr.Length; i++)
{
int temp = arr[i];//先取出循环的第一个元素
int j = i;
while ((j > 0) && ((arr[j-1]) > temp))
{
arr[j] = arr[j - 1];
j--;
}
arr[j] = temp;
}
}
思路:先取一个元素,和前面的元素比较,如果前面的元素大于它,那么将数值大的元素赋值给a[j],最后把暂存的元素赋值给交换的元素。