冒泡排序
思路(长度为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));
}
}