1.冒泡排序(升序)
冒泡排序的基本思想是:通过对排序序列从前往后(从下标较小的元素开始),一次次比较相邻元素的值,若发现逆序则交换,使值较大的值逐渐从前往后移动,像冒气泡一样
优化:因为排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列已经有序了,不必再继续比较排序
例子:5,4,3,2,1(按照升序)
第一趟比较:
4,3,2,1,5
第二趟比较:
3,2,1,4,5
第三趟比较:
2,1,3,4,5
第四趟比较:
1,2,3,4,5
总结:一共需要比较n - 1趟
private static void bubbleSort(int[] array){
int temp = 0;
for(int i = 0 ; i < array.length - 1; i++){
boolean flag = true;
for(int j = 0; j < array.length - 1 - i; j++){
if(array[j] > array[j + 1]){
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = false;
}
}
if(flag){
break;
}else{
flag = true;
}
}
}
2.选择排序(升序)
选择排序的基本思想是:通过第1次比较,将最小的元素放到a[0]位置(假设a[0]位置最小开始,后面元素都和a[0]比较);通过第2次比较将第2小的数放到a[1]位置;...通过n - 1次,将第 n - 1小的元素放到a[n - 1]位置,便完成排序
private static void selectSort(int[] array){
int temp = 0;
for(int i = 0 ; i < array.length - 1 ; i++){
for(int j = i; j < array.length; j++){
temp = array[i];
if(temp > array[j]){
array[i] = array[j];
array[j] = temp;
}
}
}
}