图示
原理
Code
1 | 1.把所有的元素分为两组,已经排序的和未排序的 |
实现
java
1 | private static void _将已排好序的放左边_比提取元素大的往右挪一个位置(Comparable a[]){ |
性能
如6个数: [6,5,4,3,2,1]
需要比较的次数
Code
1 | 第一轮需要比较次 |
同理需要交换的次数
Code
1 | 第一轮需要交换1次 |
N个数需要比较总次数:1 + 2 + … + (N-3)+(N-2)+(N-1) = ((N-1)+1) * (N-1)/2 = N^2/2 - N/2
N个数需要交换总次数:1 + 2 + … + (N-3)+(N-2)+(N-1) = ((N-1)+1) * (N-1)/2 = N^2/2 - N/2
总的执行次数为:N^2/2 - N/2 + N^2/2 - N/2 = N^2-N
根据大O记法,时间复杂度为 O(N^2)
稳定性
稳定


