交换排序
基本思想:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 冒泡排序 1.基本思想 将被排序的记录数组R[1...n]垂直排序,每个记录R[i]看做是重量为R[i].key的气泡。根据轻气泡不能再重气泡之下的原则,从下往上的原则,从下往上(也可以从上往下)扫描数组R,一旦扫描到违反此原则的轻气泡,就使其向上“漂浮”。如此反复进行,直到最后任何两个气泡都是轻者在上、重者在下为止。 2.算法分析 【1】时间复杂度为 O(n^2) 【2】辅助空间复杂度S(n) = O(1),是一个就地排序 【3】冒泡排序是稳定的排序方法 快速排序 1.基本思想 设当前待排序的无序区为R[low...high] 【1】分解 在R[low...high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间 R[low...pivotpos-1]和 R[pivotpos+1...high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot, pivot=R[pivotpos])的关键字pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无须参加后续的排序。划分的关键是求出基准记录所在的位置pivotpos