排序算法入门——直接插入排序

 

时间复杂度

 

·        直接插入排序最好的时间复杂度为O(n)

·        直接插入排序的最坏时间复杂度为O(n^2)

·        因此直接插入排序总的平均时间复杂度为O(n^2)

注:具有稳定性

排序原理

            虽然给出的排序数字为一个数组或者别的容器,但是排序的时候,就当是顺序给你一个又一个数字,给你一个你排一个(类似于扑克牌,打牌的时候,你拿一张牌,你要排一下顺序,看拿到的牌的大小,大的往后,小的直接插前面,但不同的是你拿到牌直接能看出来放哪,而在计算机里的排序,必须先比较,前面已经排好的数字,你才知道放哪),直接插入排序就是按这个思想来走的。

测试截图

要排序的数字为2,5,3,6,1,7

 排序算法入门——直接插入排序_第1张图片

左边是排好的数字,右边是还没排的,从这个排序过程可以看出,运算过程是取一个排一个,

以第二遍为例,2,5已经排好,下一个要排的是3,所以第三遍,3先跟5比较,3<5,所以,3跟2在比较,3>2,因此3放2,5之间。

c++(从小往大排)

#include
using namespace std;
void directsort(int a[6],int n){
	int temp;
	for(int i=1;i=0&&a[j]>temp;j--){//这个过程相当于上例中,从5往前比较
				a[j+1]=a[j];//把比要排序的数字大的都往后挪一位,给排序数字留出位置
,			}
			a[j+1]=temp;//循环结束,把排序数字放到留的位置上
		}
	}
}
void print(int a[6],int n){//
	for(int i=0;i

 

 

 

你可能感兴趣的:(排序算法)