码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构排序之插入排序

时间:2015-10-30 16:46:51      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

一  插入排序分析

     对于这种插入排序呢,我认为这就是另一种排序的思想,逐个拿出每一个元素从该元素的前一个开始比较(从小到大),如果该元 素比它的前元素小,就将前元素的值赋值给该元素,直到不满足条件为止j>=0&&array[j]>min,当循环结束后, 执行 array[j+1]=min;就可以成功的将元素插入,其实这样做的话,数组前面就是有序的,而后面是无序,思想就是这样子了,但是对于时间的复 杂度吗?按照最坏的情况就是倒序时,你在正序排一遍,假如我5个数,5,4,3,2,1

 

技术分享

 

可以很容易的看出来O(n)=1+2+3+4+ · · · · ·+(n-1)这为前n-1项数之和,即就是时间复杂度为O(n^2)

 

二 代码

 

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void insertsort(int array[],int n)   // 实现排序的函数
{
    int i,j,min=0;
    for(i=0;i<n;i++)
	{
		min=array[i];
		for(j=i-1;j>=0&&array[j]>min;j--)
			array[j+1]=array[j];
		array[j+1]=min;
	}

}
int main()          // 主函数
{
	int array[100];
	int i=0,n;
	srand ( (unsigned)time (NULL) );
    printf("请你输入要排序的个数: ");
	scanf("%d",&n);
	printf("随机产生%d个数: ",n);
	for(i=0;i<n;i++)
	{
		array[i]=rand()%10+10; //产生10~20之间的数
		printf("%d ",array[i]);
	}
	insertsort(array,n);   // 实现排序的函数
	printf("\n排序之后为:",n);
	for(i=0;i<n;i++)
	{
      printf("%d ",array[i]);
	}
    printf("\n");
	return 0;

 

 三  结果演示

    为了方便起见,我直接用来随机产生数的函数,只要输入你要排序几个数即可,如果想手动输入的话,对上面简单修改就可以了,我也就不废话了

技术分享

 

数据结构排序之插入排序

标签:

原文地址:http://www.cnblogs.com/yunitongxing/p/4923653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!