/*} /*選擇排序:選擇當前遍歷的首位作為最小值,依次往後遍歷,如果後面有比首位值更小,交換值
時間複雜度:
o(n2)
不穩定演算法
*/public class
selectionsort
;
//排序
selectsort
(arr
);
//輸出排序後的結果集
for(
int
i =
0;i<
arr.
length
;i++)
}public static void
selectsort
(int
arr)}}
}public static void
swap
(int
arr,
int
temp1,
int
temp2)
氣泡排序:兩兩相鄰比較,最小值的放在首位
時間複雜度:
o(n2),
為穩定性演算法
*/public class
bubblesort ;//
排序bubblesort
(arr
);//
輸出排序後的結果集
for(
int
i =
0;i<
arr.
length
;i++)
}public static void
bubblesort
(int
arr)}}
}public static void
swap
(int
arr,
int
temp1,
int
temp2)}
/*插入排序:類似於撲克牌排序,每乙個待排序的牌的前面已然有序,通過比較插入到合適的位置
* 時間複雜度
o(n2)
穩定性排序
*/public class
insertsort ;//
排序insertsort
(arr
);//
輸出排序後的結果集
for(
int
i =
0;i<
arr.
length
;i++)}//
插入排序
public static void
insertsort
(int
array)
else
}array[j+
1]=temp;}}
} //快排
public class
quicksort ;//
排序quicksort
(arr,0
,arr
.length - 1
);//
輸出排序後的結果集
for(
int
i =
0;i<
arr.
length
;i++)
}/**
* 快速排序方法
* @param
array
* @param
start
* @param
end* @return
*/public static int
quicksort
(int
array,
int
start,
int
end)
/***
快速排序演算法
——partition
* @param
array
* @param
start
* @param
end* @return
*/public static int
partition
(int
array,
int
start,
int
end)
return
smallindex;
}/**
* 交換陣列內兩個元素
* @param
array
* @param
i* @param j*/
public static void
swap
(int
array,
int
i, int
j) }
/*** 歸併排序
** @param array
* @return
*/public static int mergesort(int array)
/*** 歸併排序——將兩段排序好的陣列結合成乙個排序陣列
** @param left
* @param right
* @return
*/public static int merge(int left, int right)
return result;
}//宣告全域性變數,用於記錄陣列array的長度;
static int len;
/*** 堆排序演算法
** @param array
* @return
*/public static int heapsort(int array)
return array;
}/**
* 建立最大堆
** @param array
*/public static void buildmaxheap(int array)
}/**
* 調整使之成為最大堆
** @param array
* @param i
*/public static void adjustheap(int array, int i)
}//荷蘭國旗問題(快排思路)
package
basic_class_01;
public class
code_08_netherlandsflag
else if
(arr[l] > p)
else
}return new int ;}
// for test
public static void
swap(
int arr,
int
i, int
j) // for test
public static int
generatearray()
return
arr;
}// for test
public static void
printarray(
int arr)
for
(int
i =
0; i < arr.length; i++)
system.out.println();
}public static void
main(string args) }
排序演算法總結
1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...
排序演算法總結
1 選擇排序 選擇排序的思想是依次從待排序數列中選擇最大 小 的 第二大 小 的等等,然後依次重新排列為有序數列。void selectionsort int a,int n if min i 時間複雜度o n 2 2 歸併排序 void merge int a,int left,int mid,i...
排序演算法總結
學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是 o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...