冒泡排序
/* 冒泡法排序<br/>
* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。</li>
* 针对所有的元素重复以上的步骤,除了最后一个。</li>
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。</li>
* @param numbers
* 需要排序的整型数组
*/
public static void bubbleSort(int[] numbers) {
int temp; // 记录临时中间值
int size = numbers.length; // 数组大小
for (int i = size-1; i >0; i--) {
for (int j = 0; j < i; j++) {
if (numbers[j] < numbers[j+1]) { // 交换两数的位置
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}
快速排序
/* * 快速排序<br/>
* <ul>
* <li>从数列中挑出一个元素,称为“基准”</li>
* <li>重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分割之后,
* 该基准是它的最后位置。这个称为分割(partition)操作。</li>
* <li>递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。</li>
*
* @param numbers
* @param start
* @param end
*/
public static void quickSort(int[] numbers, int start, int end) {
if (start < end) {
int base = numbers[start]; // 选定的基准值(第一个数值作为基准值)
int temp; // 记录临时中间值
int i = start, j = end;
while (i < j) {
while ((numbers[j] >= base) && (i < j))
j--;
numbers[i] = numbers[j];
while ((numbers[i] <= base) && (i < j))
i++;
numbers[j] = numbers[i];
}
numbers[i] = base;//i为基准找到的排序后应该在的位置,将基准放到准确位置。
Syste