/**
* 冒泡排序,两层嵌套循环,内层局部比较后,找出最大或者最小数据并交换数据,使其局部有序,外层用于比较剩余元素,相较于选择排序,选择排序相当于是冒泡的一个优化版本(减少了交换次数)
*/
public static void buble_sort() {
int [] arr = {1,12,2,3,1,25,3,87,45,32,90,0,1,12,2,3,1,25,3,87,45,32,90};
for(int i=0;i < arr.length; i++) {
for (int j=i+1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int i : arr) {
System.out.println(i);
}
}
/**
* 插入排序,核心思想是左边的数据已经假设全部有序,取出右边的数据,经过比较后插入到左边。
*/
public static void insert_sort() {
int [] arr = {1,12,2,3,1,25,3,87,45,32,90,0,1,12,2,3,1,25,3,87,45,32,90};
for(int i=0; i< arr.length;i++) {
for(int j=i; j>0 && arr[j] < arr[j-1]; j--) {
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
for (int i : arr) {
System.out.println(i);
}
}
/**
* 选择排序,两层嵌套循环,内层根据索引排序得到最大或最小值,外层交换。
*/
public static void select_sort() {
int [] arr = {12,2,3,1,25,3,87,45,32,90,0,1,12,2,3,1,205,3,87,45,32,90,1,12,2,3,1,25,3,87,45,32,90,0,1,12,2,3,1,25,3,87,45,32,90};
for(int i=0; i<arr.length; i++) {
int min = i;
for(int j=i+1; j<arr.length; j++) {
if(arr[min] > arr[j]) {
min = j;
}
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
for (int i : arr) {
System.out.println(i);
}
}`
冒泡,选择和插入排序比较
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.