1、前言
1.0 定义
对一序列对象进行排序;
1.1 术语
稳定and不稳定:看是不是改变原序列相等元素的位置;
内排序and外排序:是内存中处理还是磁盘中处理。
时间复杂度:执行所耗费的时间;
空间复杂度:执行所耗费的内存;
1.2 符号
n一般为序列长度
O一般用于表示复杂度 (疑问? 为啥要用O)
1.3 常见排序算法
交换排序:冒泡排序、快排
选择排序:简单选择排序、堆排序
插入排序:直接插入排序、希尔排序
堆排序
归并排序
2、冒泡排序(我觉得应该叫:下沉排序)
平均时间复杂度O(N)
最差时间复杂度O(N * N)
最优时间复杂度 O(N)
空间复杂度O(1)
稳定or不稳定都可以,看代码怎么写了
内部排序
/**
* 冒泡排序
* @param array
* @return
*/
private int[] BubblerSort(int [] array) {
if(array.length == 0) {
return array;
}else {
for(int i = 0; i < array.length-1; i++) { //循环次数i
for(int j = 0; j < array.length - 1 - i; j++) { //第i次循环比较次数j
if(array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
}