面试和笔试中常常会遇到排序算法的提问和面试;
这是基础必须打牢
文章目录
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; /* 全程无交换 */
}
}