冒泡排序:
冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面。
通过冒泡排序方法实现对 score 数组的排序,在实现时需要借助一个临时变量。代码如下:
public static void main(String[] args) {
System.out.println("通过冒泡排序方法对数组进行排序:");
for (int i = 0; i < score.length - 1; i++) {
// 比较相邻两个元素,较大的数往后冒泡
for (int j = 0; j < score.length - 1 - i; j++) {
if (score[j] > score[j + 1]) {
double temp = score[j + 1]; // 把第一个元素值保存到临时变量中
score[j + 1] = score[j]; // 把第二个元素值转移到第一个元素变量中
score[j] = temp; // 把临时变量(第一个元素的原值)保存到第二个元素中
}
System.out.print(score[j] + " "); // 对排序后的数组元素进行输出
}
System.out.print("【");
for (int j = score.length - 1 - i; j < score.length; j++) {
System.out.print(score[j] + " ");
}
System.out.println("】");
}
}
快速排序:
快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此使整个数据变成有序序列。
利用快速排序法对一数组进行排序,实现步骤如下。
(1) 声明静态的 getMiddle() 方法,该方法需要返回一个 int 类型的参数值,在该方法中传入 3 个参数。代码如下:
public static int getMiddle(int[] list, int low, int high) {
int tmp = list[low]; // 数组的第一个值作为中轴(分界点或关键数据)
while (low < high) {
while (low < high && list[high] > tmp) {
high--;
}
list[low] = list[high]; // 比中轴小的记录移到低端
while (low < high && list[low] < tmp) {
low++;
}
list[high] = list[low]; // 比中轴大的记录移到高端
}
list[low] = tmp; // 中轴记录到尾
return low; // 返回中轴的位置
}
选择排序:
使用选择排序法也可以对上述数组中的元素进行排序,但是它与冒泡排序不同。选择排序是指每一趟从待排序的数据元素中选出最大(或最小)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
利用选择排序方法通过编程的方式实现对 number 数组的排序,并输出已排序的数组元素。代码如下:
int[] number = {13,15,24,99,4,1};
String end = "\n";
int index;
for (int i = 1;i < number.length;i++) {
index = 0;
for(int j = 1;j <= number.length-i;j++) {
if (number[j] > number[index]) {
index = j; // 查找最大值
}
}
end = number[index] + " " + end; // 定位已排好的数组元素
int temp = number[number.length-i];
number[number.length-1] = number[index];
number[index] = temp;
System.out.print("【");
for (int j = 0;j < number.length-i;j++) {
System.out.print(number[j]+" ");
}
System.out.print("】"+end);
}