[数据结构]排序算法

Posted 再吃一个橘子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[数据结构]排序算法相关的知识,希望对你有一定的参考价值。

插入排序

单趟插入排序

(假设升序, 且原数组是有序数组)

//单趟排序(升序为例)   [原数组为有序数组]
void InsertSort(int* a, int n)

	int end = sizeof(a) / sizeof(a[0]) - 1;
	int x;

	while (end >= 0)
	
		if (a[end] > x)
		
			a[end + 1] = a[end];
			--end;
		
		else
		
			break;
		
	
	a[end + 1] = x;

 

有时间再看杭哥讲解!

插入排序算法

(升序,且原数组是无序)

//插入排序(升序为例)   [原数组为 无序数组 ]
void InsertSort(int* a, int n)

	for (int i = 0; i < n - 1; i++)
	
		int end = i;
		int x = a[end+1];

		while (end >= 0)
		
			if (a[end] > x)
			
				a[end + 1] = a[end];
				--end;
			
			else
			
				break;
			
		
		a[end + 1] = x;
	

(我们用抓扑克牌来理解会更好一些)

比如:我们抓牌,摸第一张抓在手里后,我们默认第一张是有序的。紧接着抓第二张牌,去和第一张牌比较大小,变为升序。再继续抓第三张牌,去和前两张牌依次比较,依旧需要比较后选择插入的位置使之 满足升序.........

希尔排序

以上是关于[数据结构]排序算法的主要内容,如果未能解决你的问题,请参考以下文章

PHP 数组排序:内置函数算法排序

[数据结构]排序算法

c# 实现直接插入排序算法-升序

对一个 n 元素数组进行排序,使前 k 个元素按升序排列最低(就地算法)

采用冒泡算法对数组进行升序或降序排序

从0开始学算法--排序(1.5归并排序)