冒泡排序(兩兩比較,交換順序)
//冒泡排序(兩兩比較,換位)
public static int[] bubble(int[] arr){
for (int i = 0; i < arr.length; 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;
}
}
}
return arr;
}
//選擇排序(找出最大,放到已經排好的序列後面)
public static int[] selection(int[] arr){
for (int i = 0; i < arr.length; i++) {
int temp =arr[i];
int temp1 = i;
for (int j = i; j < arr.length-1; j++) {
temp = arr[j+1]>temp ? arr[j+1]:temp;
}
for (int j = i; j < arr.length; j++) {
if(temp==arr[j]){
temp1=j;
}
}
int temp3 = arr[i];
arr[i] = arr[temp1];
arr[temp1] = temp3;
}
return arr;
}
@Test//選擇排序
public void selectSort(){
int[] c = {23,12,34,56,4,7,13};
//假定待排序數組的第一個元素爲最小值,將它與其後的每一個元素進行比較,最終確定在這個待排序數組中最小值元素的位置,最後判斷最小值元素是否爲第一個元素,
//如果不是,交換
for(int i=0;i<c.length-1;i++){
int temp ;
int minIndex = i;//假定第一個元素是最小值
for(int j=i+1;j<c.length;j++){
if(c[minIndex]>c[j]){
minIndex = j;
}
}
if(minIndex!=i){
temp = c[minIndex];
c[minIndex] = c[i];
c[i] = temp;
}
}
for (int i : c) {
System.out.println(i);
}
}
插入排序(依次插入前面的序列)
public static int[] insert(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < i+1; j++) {
if(arr[i+1]>arr[j]){
int temp = arr[i+1];
for (int k = i+1; k > j; k--) {
arr[k]=arr[k-1];
}
arr[j] =temp;
break;
}
}
}
return arr;
}
//插入排序
@Test
public void insertSort(){
int[] c = {23,12,34,56,4,7,13};
//12,23,34
for(int i=1;i<c.length;i++){//自第二位起,一次取一個待排序的元素
int temp=c[i];
int j=i-1;
while(j>=0&&temp<c[j]){
c[j+1]=c[j];
j=j-1;
}
c[j+1]=temp;
}
for (int i : c) {
System.out.println(i);
}
}
@Test//插入排序
public void insertSort1(){
int[] c = {23,12,34,56,4,7,13};
//12,23,34
for(int i=1;i<c.length;i++){//自第二位起,一次取一個待排序的元素
int temp=c[i];
int j=0;
for(j=i-1;j>=0&&c[j]>temp;j--){//將i之前的每一個比temp要大的元素都後一移一位
c[j+1]=c[j];
}
c[j+1]=temp;
}
for (int i : c) {
System.out.println(i);
}
}