package com.study.sort;
/**
* @author demo
* @2019年2月14日 下午2:16:38
* @冒泡排序 外层循环arr.length-1 =>内层循环arr.length-i-1 =>元素交换
* a dog who is coding in Valentine's Day...
*/
public class sort {
public static void main(String[] args) {
int[] arr = {9,3,1,4,2,7,8,6,5};
//sortOne2(arr);
sortTwo(arr);
//sortThree(arr);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"-");
}
}
/**
* 2019年2月14日 下午2:16:57
* 普通排序
* <==>sortOne2
*/
public static void sortOne(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int min = arr[j];
arr[j]=arr[i];
arr[i]=min;
}
}
}
}
/**
* 2019年2月14日 下午2:16:57
* 普通排序
*/
public static void sortOne2(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/**
* 2019年2月14日 下午2:18:58
* 优化排序
*/
public static void sortTwo(int[] arr){
boolean flag = true;//不存在交换,即有序
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = false;
}
}
if(flag){
break;
}
}
}
/**
* 2019年2月14日 下午2:33:31
* 优化排序升级版
*/
public static void sortThree(int[] arr){
boolean flag = true;//不存在交换,即有序
int lastIndex = 0;
int sortIndex = arr.length-1;
for(int i=0;i<arr.length;i++){
for(int j=0;j<sortIndex;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = false;
lastIndex = j;//交换的下标
}
}
sortIndex = lastIndex;
if(flag){
break;
}
}
}
}