1.常见排序种类
冒泡排序,插入排序,选择排序,归并排序,希尔排序。
二.排序原理及代码实现
冒泡排序:
//冒泡排序
public void bubblesort(int[] array){
for(int i = 0; i < array.length; i++){
boolean flag = true;
for(int j = array.length-1; j--){
if(array[j] > array[j-1]){
int temp;
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
flag = true;
}
if(flag == false)
return;
}
}
}
直接插入排序:
//插入排序:直接插入
//插入排序:直接插入
public void InsertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int guard = 0; //哨兵,存储当前元素
if (array[i] < array[i - 1]) { //if当前元素小于之前元素,需要将该元素插入已排好的有序数组,否则i++;
guard = array[i]; //guard范围在if中
int j = 0;
for (j = i - 1; j > 0; j--) {
if (array[j] > guard) {
array[j + 1] = array[j];
}
else
break; //当前元素小于哨兵,跳出循环,其实j值+1的元素为guard
}
array[j + 1] = guard;
}
}
}
}
//选择排序
public void SelectSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = i;
for (int j = array.length - 1; j > i; j--) { //选出待排序列中最小元素的下标,和已排好序列后一位置元素交换,交换元素值
if (array[j] < array[min]) {
min = j;
}
}
int temp = array[i];
array[i] = array[min];
array[min]= temp;
}
}
}