使用典型排序算法(冒泡排序、插入排序和选择排序,3选2),对数组int[] nums = {10,4,56,32,78,-5,1,40,99,63}进行升序和降序排序
时间: 2024-10-21 15:18:06 浏览: 12
当然,我可以为你介绍如何分别使用冒泡排序、插入排序和选择排序对给定的整数数组 `nums` 进行升序和降序排序。
首先,让我们了解一下这些排序算法:
1. **冒泡排序**:重复遍历数组,每次比较相邻元素并交换它们,直到整个序列没有再发生交换。
2. **插入排序**:从第二个元素开始,逐个将每个元素插入到已排序的部分中的正确位置。
3. **选择排序**:从未排序部分找到最小(或最大)元素,并将其放置在已排序部分的末尾。
下面是三种排序算法的示例代码:
**升序排序 (从小到大)**:
```java
public class Sorting {
void bubbleSort(int[] nums) {
// 冒泡排序
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
// 插入排序
for (int i = 1; i < nums.length; i++) {
int key = nums[i];
int j = i - 1;
while (j >= 0 && nums[j] > key) {
nums[j + 1] = nums[j];
j--;
}
nums[j + 1] = key;
}
// 选择排序
for (int i = 0; i < nums.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = nums[i];
nums[i] = nums[minIndex];
nums[minIndex] = temp;
}
}
}
public static void main(String[] args) {
int[] nums = {10, 4, 56, 32, 78, -5, 1, 40, 99, 63};
Sorting sorting = new Sorting();
sorting.bubbleSort(nums);
System.out.println("升序排列: " + Arrays.toString(nums));
}
}
```
**降序排序 (从大到小)**:
只需简单地修改上述代码,将比较操作取反即可:
```java
// 修改冒泡排序、插入排序和选择排序的条件为:如果当前元素小于下一个元素
if (nums[j] < nums[j + 1]) {...}
// 修改插入排序:如果当前元素大于key
while (nums[j] < key) {...}
// 修改选择排序:如果当前元素大于minIndex的元素
if (nums[j] > nums[minIndex]) {...}
```
运行这个代码,你可以看到数组按升序和降序排列的结果。
阅读全文