摘要:
快速排序 思路分析:快速排序采用双向查找的策略,每一趟选择当前所有子序列中的一个关键字作为枢纽轴,将子序列中比枢纽轴小的前移,比枢纽轴大的后移,当本趟所有子序列都被枢轴按上述规则划分完毕后将会得到新的一组更短的子序列,他们将成为下趟划分的初始序列集。 时间复杂度:最好情况(待排序列接近无序)时间复杂 阅读全文
摘要:
冒泡排序 思路分析:冒泡排序属于交换类排序,对n个元素的序列,需要将n 1个元素与相邻元素进行比较,并根据实际需求,交换相邻两个元素,使较大元素和较小元素分别向两个方向聚集。 时间复杂度:最坏情况(初始序列逆序)时间复杂度为O(n2),最好情况(初始序列顺序)时间复杂度为O(n),平均情况时间复杂度 阅读全文
摘要:
希尔排序 思路分析:希尔排序又叫缩小增量排序,通过指定增量序列(尽量取素数且最小增量必须为1)对需要进行排序的数组进行分组,然后每组内部进行一次直接插入排序,不断缩小增量,直到增量为1排序完成。 时间复杂度:不同增量序列时间复杂度不同(希尔增量序列时间复杂度为O(n2)、帕斯增量序列时间复杂度为O( 阅读全文
摘要:
折半插入排序 思路分析:通过对直接插入排序算法进行思考,我们可以知道插入排序方式首先需要为要插入的元素找到插入序列中合适的插入位置。通过折半((low+high)/2=mid)的方式,凭借一个mid来使得我们通过二分插入区的方式,不断缩小插入的区域,直到low high时,我们即可找到元素的插入位置 阅读全文
摘要:
直接插入排序 思路分析:在一个有序的数组中为要插入的元素找到指定的插入位置,但这个位置并不一定是最后排序结果中对应元素的最终位置。 时间复杂度:最坏情况(整个序列逆序时)时间复杂度为O(n2),最优情况(整个序列初始顺序,从大到小时)时间复杂度为O(n),平均情况时间复杂度为O(n2)。 源代码: 阅读全文