欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小甲鱼 排序算法 直接插入排序

程序员文章站 2022-03-24 15:32:48
...

小甲鱼 排序算法 直接插入排序

 

在这之间排序算法的时间复杂度是O(n2),希尔排序突破了O(n*logn)

 

直接插入排序算法(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。

 

直接插入排序算法的效率 不会比冒泡排序和选择排序差

 

#include <stdio.h>

void InsertSort(int k[], int n)
{
	int i, j, temp;
	
	//i=1,因为需要j指向前一个元素 
	for(i = 1; i < n; i++)
	{
		//进行重新排序,后面的元素小于前面的元素 
		if (k[i] < k[i-1])
		{
			temp = k[i];
			
			//一个一个地往后推,推到相应位置,然后把temp插进去 
			for (j = i -1; k[j] > temp; j--)
			{
				k[j+1] = k[j];//找位置,同时向后推移 
			}
			
			k[j+1] = temp;
		}
	}
	
}

int main(void)
{
	int i, a[10] = {5, 2, 6, 0, 3, 9, 1, 7, 4, 8};
	
	InsertSort(a, 10);
	
	printf("排序后的结果是:");
	for (i = 0; i < 10; i++)
	{
		printf("%d", a[i]);
	}
	printf("\n\n");
	return 0;
}