2.C语言插入排序

114 阅读1分钟
  1. 常见算法时间复杂度 在这里插入图片描述

  2. 插入排序基本思想

基本思想:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。 优点:稳定,快; 缺点:比较次数不一定,插入后的数据移动多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。

  1. 代码实现
#include <stdio.h>
#include <stdlib.h>


int printfArray03(int array[], int len)
{
	int i;
	for(i = 0;i < len;++i)
	{
		printf("%d ",array[i]);
	}
	printf("\n");
	return 0;
}

int myswap(int* p_a,int* p_b)
{
	*p_b = *p_a + *p_b;	
	*p_a = *p_b - *p_a;
	*p_b = *p_b - *p_a;
	return 0;
}


int BubbleSort(int array[], int len)
{
	int i,j;
	for(i = 1;i < len;++i)
	{
		//每次比较的是当前元素和当前元素的前一个元素的比较,故判断条件是j>0而不是j>=0
		for(j = i   ;j > 0 && array[j -1] > array[j] ;--j)
		{
			myswap(&array[j],&array[j -1]);
		}
	}


	return 0;
}

int main()
{
	int array[] = {8,3,6,1};
	int len = sizeof(array) / sizeof(int); 
	printfArray03(array, len);
	BubbleSort(array, len);
	printfArray03(array, len);


	return 0;
}