前言:一直想整理数据结构和算法的系列文章,这篇是该系列文章的第一篇,先从简单排序开始,后续文章会慢慢写一些复杂算法和数据结构。
冒泡排序
适用场景:冒泡排序和选择排序数据量比较小的情况,最好是个位数,因为数据量大该算法比较耗性能。数据量少(个位数情况下)反而比复杂算法性能要高。
冒泡排序
//冒泡排序 int[] array = new int[]{7,4,5,8,1,9,4,2,6,3};
public void bubbleSort(int[] array){
for (int i = array.length-1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = false;
}
}
}
}
优化后的冒泡排序
//冒泡排序 int[] array = new int[]{7,4,5,8,1,9,4,2,6,3};
public void bubbleSort(int[] array){
for (int i = array.length-1; i > 0; i--) {
boolean flag = true;
for (int j = 0; j < i; j++) {
if (array[j] > array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = false;
}
}
if (flag) {
break;
}
}
}
选择排序
//选择排序 int[] array = new int[]{7,4,5,8,1,9,4,2,6,3};
public void selectSort(int[] array){
for (int i = 0; i < array.length-1; i++) {
int index = i;
for (int j = i+1; j < array.length; j++) {
if (array[j] < array[index]) {
index = j;
}
}
//交换
int temp = array[index];
array[index] = array[i];
array[i] = temp;
}
}
优化后的选择排序
//选择排序 int[] array = new int[]{7,4,5,8,1,9,4,2,6,3};
public void selectSort(int[] array){
for (int i = 0; i < array.length-1; i++) {
int index = i;
for (int j = i+1; j < array.length; j++) {
if (array[j] < array[index]) {
index = j;
}
}
if (index != i) {
//交换
int temp = array[index];
array[index] = array[i];
array[i] = temp;
}
}
}
总结
冒泡排序优化后的代码就是加了如果第一轮遍历时就已经拍好了就直接跳出循环;而选择排序优化是判断index下标的数据和i下标是一致的情况就不做交换;冒泡排序和选择排序比较简单,具体就不文字过多描述了,直接看代码