C++后端面试|笔试基础(1):几大排序算法

面试和笔试中常常会遇到排序算法的提问和面试;
这是基础必须打牢

0. 总结

(该图表来自于「yj_coder」
在这里插入图片描述

1. 插入排序—直接插入排序(Straight Insertion Sort)

  • 基本思想

将一个数据插入到已排序好的有序表中,从而得到一个新的、总长度增加1的有序表。
即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

要点:设立哨兵,作为临时存储和判断数组边界之用。

在这里插入图片描述

2. 插入排序—希尔排序(Shell`s Sort)

3. 选择排序—简单选择排序(Simple Selection Sort)

4. 选择排序—堆排序(Heap Sort)

5. 交换排序—冒泡排序(Bubble Sort)

20200725更新,面试手撕冒泡排序;既然考到了,特地来更新下:

void Bubble_Sort( ElementType A[], int N )
{ 
	for ( P=N-1; P>=0; P-- )
	{
		flag = 0;
		for( i=0; i<P; i++ ) 
		{ /* 一趟冒泡 */
			if ( A[i] > A[i+1] ) 
			{
				Swap(A[i], A[i+1]);
				flag = 1; /*  标识发生了交换 */
			}
		}
	}
	if ( flag==0 ) 
		break; /* 全程无交换 */
	}
}

6. 交换排序—快速排序(Quick Sort)

猜你喜欢

转载自blog.csdn.net/CoomCon/article/details/107185970