插入排序_1.直接插入排序
来源:互联网 发布:alien skin x2 mac 编辑:程序博客网 时间:2024/06/05 16:03
插入排序
插入排序的算法思想是:在一个有序的元素序列中,不断地将新元素插入到该已经有序的元素序列中的合适位置,直到所有元素都插入到合适位置则完成排序。
直接插入排序:
假设待排序的元素有n个,对应的元素分别是a1,a2,a3,a4...,因为第一个元素是有序的,所以从第二个元素开始,将a2与a1进行比较。如果a2<a1,将a2插入到a1之前,否则则说明一已经有序,不需要移动。然后将a3与a2进行比较,如果a3<a2,继续将a3与a1进行比较,如果小于a1,插入到a1之前,如果大于a1,插入到a1之后,a2之前。如果a3大于a2,则说明已经有序,不需要再移动.
实现代码(C#实现):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] a = new int[] { 45, 23, 56, 12, 97, 76, 29, 68 };//一个无序的数组,要将他从小到大排序
for (int i = 1; i < a.Length; i++) { //第一个数a[0]是有序的,所以第二个数a[1]开始
int temp = a[i]; //记录下当前待比较的元素
int j = i-1; //记录下带比较元素前一个元素的索引
while (j > -1 && temp < a[j]) { //将待比较元素与前面元素进行比较
a[j+1] = a[j]; //如果待比较元素小于前面的元素,将前面元素向后移动一个位置
j--;
}
a[j+1] = temp; //找到带比较元素的合适的位置了
}
for (int i = 0; i < a.Length; i++) {
Console.WriteLine(a[i]);
}
Console.ReadKey();
}
}
}
直接插入排序在最好的情况下,就是所有所有元素已经有序,时间复杂度为O(n),最坏的情况下是所有元素都是逆序,时间复杂度为O(n^2).
- 插入排序_1.直接插入排序
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 【插入排序】直接插入排序
- 插入排序-直接插入排序
- 插入排序:直接插入排序
- 插入排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 插入排序-直接插入排序
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 初始BFS ,以及二叉树层次遍历
- 【Phaser游戏列表】——Flappy-bird
- For循环
- [MFC]CString转char[]
- 程序员的编程、调试、排错小建议
- 插入排序_1.直接插入排序
- 程序员生存定律-打造属于自己的稀缺性
- 东软学习,oracle函数与触发器
- Java Thread(线程)案例详解sleep和wait的区别
- EGORefreshTableHeaderView--ARC下面的使用 UItableView下来刷新的使用
- hdu 1005 Number Sequence(智寻循环节)
- UVA 662 Fast Food 区间DP
- 【金阳光测试】--深入Monkey工具和使用--Android系列(3)2014年八月八号
- qt html标签