/**
* 冒泡法排序
* 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
* 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
* 針對所有的元素重複以上的步驟,除了最後乙個。
* 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
*
* @param numbers
* 需要排序的整型陣列
*/
public static void bubblesort(int numbers)
}
}
}
/**
* 快速排序
*
*
* @param numbers
* @param start
* @param end
*/
public static void quicksort(int numbers, int start, int end)
} while (i <= j);
if (start < j)
quicksort(numbers, start, j);
if (end > i)
quicksort(numbers, i, end);
}
}
/**
* 選擇排序
* 在未排序序列中找到最小元素,存放到排序序列的起始位置
* 再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。
* 以此類推,直到所有元素均排序完畢。
*
* @param numbers
*/
public static void selectsort(int numbers)
temp = numbers[i];
numbers[i] = numbers[k];
numbers[k] = temp;
}
}
各演算法的複雜度:/**
* 歸併排序
*
*
* @param numbers
*/
public static void mergesort(int numbers, int left, int right)
if (i + (s - 1) < right)
merge(numbers, i, i + (s - 1), right);
}
}
/**
* 歸併演算法實現
*
* @param data
* @param p
* @param q
* @param r
*/
private static void merge(int data, int p, int q, int r) else
k++;
}
if (s == q + 1)
b[k++] = data[t++];
else
b[k++] = data[s++];
for (int i = p; i <= r; i++)
data[i] = b[i];
}
氣泡排序:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的)。第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。由於在排序過程中總是小數往前放,大數往後放,相當於氣泡往上公升,所以稱作氣泡排序。
快速排序:快速排序是對氣泡排序的一種改進。選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。
選擇排序:每一趟從待排序的資料元素中選出最小的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。
歸併排序:歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。
Java陣列中常見的排序演算法
今天在陣列中用到了排序演算法,經過查詢資料之後,在這總結三種常見的排序演算法。氣泡排序法 public void fun1 n個數要比較的輪數為n 1 for int i 0 i array.length 1 i for int i 0 i array.length i 選擇排序法 public v...
java中常見異常
runtimeexception 1.arithmeticexception 數學計算異常 2.nullpointerexception 空指標異常 3.negativearraysizeexception 負陣列長度異常 4.arrayindexoutofbound ception 陣列索引越界異...
java中常見演算法2
二分查詢原理 param arr 乙個陣列 param a 要查詢的整數 return 返回查詢到的陣列下標,沒找到則返回 1 public int find int arr,int a else if a middle else return 1 利用遞迴實現二分查詢 param arr 乙個陣列...