冒泡排序
思路(長度爲n的數組):
- 首先,對n個元素進行n-1次排序,進行n-1次
- 考慮到每排序一次,就會有一個當前最大或最小的元素置於頂端,所以排序的次數減去當前已經排序的次數(num-1-i)
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入數組的大小");
int num = scanner.nextInt();
int[] sortArray = new int[num];
System.out.println("請輸入"+num+"大小的數組");
for (int i = 0; i < num; i++) {
sortArray[i] = scanner.nextInt();
}
int temp = 0;
for (int i = 0; i < num-1; i++) {
for (int j = 0; j < num-1-i; j++) {
if(sortArray[j]>sortArray[j+1]){
temp = sortArray[j];
sortArray[j] = sortArray[j+1];
sortArray[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(sortArray));
}
}
選擇排序
思路(長度爲n的數組):
- 對n個元素進行掃描,記錄下最小元素的值和索引,掃描結束,把最小(以最小爲例)的元素置於首位。
- 對接下來的n-1個元素進行掃描,記錄下最小元素的值和索引,掃描結束,把最小(以最小爲例)的元素置於首位。
… - 剩下最後一個元素無序進行排序(len-1)
public class Test2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入數組的大小");
int num = scanner.nextInt();
int[] sortArray = new int[num];
System.out.println("請輸入"+num+"大小的數組");
for (int i = 0; i < num; i++) {
sortArray[i] = scanner.nextInt();
}
int temp = sortArray[0];
int index = 0;
int len = sortArray.length;
for (int i = 0; i < len-1; i++) {
for (int j = i; j < len; j++) {
if(temp>sortArray[j]){
temp = sortArray[j];
index = j;
}
}
sortArray[index] = sortArray[i];
sortArray[i] = temp;
temp = sortArray[i+1];
}
System.out.println(Arrays.toString(sortArray));
}
}