//冒泡排序初级版
- publi cclass bubbleSort {
- public void bubbleSort(int [] arr){
- int temp=0;
- for(int i=0;i<a.length;i++){
- for(int j=i+1;j<a.length;j++){
- if(a[i]>a[j]){
- temp=a[i];
- a[i]=a[j];
- a[j]=temp;
- }
- }
- }
//正宗冒泡排序
static void bubble_sort(int[] unsorted) { for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[j] > unsorted[j+1]) { int temp = unsorted[j]; unsorted[j] = unsorted[j+1]; unsorted[j+1] = temp; } } } }//冒泡排序优化版
- public static void bubbleSort4(int[] arr){
- boolean flag = true;
- for(int i=0;i<arr.length&& flag;i++){
- flag = false;
- for(int j=i;j<arr.length-1;j++){
- if(arr[j] >arr[j+1]){
- //数据交换
- swap(arr,j,j+1);
- //设置标志位
- flag = true;
- }
- }
- }
- }
/**
* description : 快速排序
* @autor kwzhang
* modify :2012-6-20
*
* @param pData
* @param left
* @param right
* @return
*/
static
void
quicksort(
int
n[],
int
left,
int
right) {
int
dp;
if
(left < right) {
dp = partition(n, left, right);
quicksort(n, left, dp -
1
);
quicksort(n, dp +
1
, right);
}
}
static
int
partition(
int
n[],
int
left,
int
right) {
int
pivot = n[left];
while
(left < right) {
while
(left < right && n[right] >= pivot)
right--;
if
(left < right)
n[left++] = n[right];
while
(left < right && n[left] <= pivot)
left++;
if
(left < right)
n[right--] = n[left];
}
n[left] = pivot;
return
left;
}
选择排序
- public class ChoiceSort {
- public static void _choiceSort(Integer[] a) {
- if (a == null || a.length <= 0) {
- return;
- }
- for (int i = 0; i < a.length; i++) {
- int min = i; /* 将当前下标定义为最小值下标 */
- for (int j = i + 1; j < a.length; j++) {
- if (a[min] > a[j]) { /* 如果有小于当前最小值的关键字 */
- min = j; /* 将此关键字的下标赋值给min */
- }
- }
- if (i != min) {/* 若min不等于i,说明找到最小值,交换 */
- int tmp = a[min];
- a[min] = a[i];
- a[i] = tmp;
- }
- }
- }
- }