顺序排序算法原理
从头开始遍历未排序数列,遍历时比较相邻的两个元素,前面的大于后面的,则双方交换位置,一直比较到末尾,这样最大的元素会出现在末尾,接着再依次从头开始遍历剩余未排序的元素,直至所有的元素都排序完成。(其实就是每次遍历时找出最大的元素,通过不断的移动位置,将其存入到未排序末尾)
算法图解
算法实现
/**
* 顺序排序
* @param arr
*/
public void sort(int arr[]){
for(int j = arr.length-1;j>1;j--){
for(int i=0;i<j;i++){
if(arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
倒序排序算法原理
顺序是从头开始遍历,倒序是从末尾开始遍历,将最大元素依次存入序列开头位置
算法图解
算法实现
/**
* 倒序排序
* @param arr
*/
public void revert(int arr[]){
for(int j=0;j<arr.length-1;j++){
for(int i=arr.length-1;i>j;i--){
if(arr[i]>arr[i-1]){
int temp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = temp;
}
}
}
}
测试
public static void main(String[] args) {
int arr[] = {9, 7, 1991, 27, -1, -10, 0, 2, 65, -100};
BubbleSort bubbleSort = new BubbleSort();
bubbleSort.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
int arr2[] = {9, 7, 1991, 27, -1, -10, 0, 2, 65, -100};
bubbleSort.revert(arr2);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + "\t");
}
}