java 插入排序 代码示例,请把说明文字 和 代码 分开 书写
时间: 2023-03-14 10:55:16 浏览: 56
Java 插入排序的说明文字:插入排序是一种比较简单的排序算法,它的工作原理是:首先,将待排序的数组分成两部分,一部分是已排序的,另一部分是未排序的。然后,从未排序的部分中取出第一个元素,将其插入到已排序部分的合适位置,使之成为新的已排序部分。重复此过程,直到数组全部有序排列。Java 插入排序的代码示例:
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
相关问题
java插入排序代码示例
以上引用中给出了一个使用 Java 实现插入排序的示例代码。该示例代码定义了一个 InsertionSort 类,其中包含一个 insertionSort 方法,用于对输入的整型数组进行插入排序。具体实现步骤如下:
1. 遍历数组,从第二个元素开始,将当前元素作为 key。
2. 将 key 与已排序部分的元素进行比较,如果已排序部分的元素比 key 大,则将该元素后移一位,直到找到 key 的正确位置。
3. 将 key 插入到正确位置。
4. 重复步骤 1-3,直到所有元素都被插入到合适的位置。
该示例代码还包含一个 main 方法,用于测试 insertionSort 方法的效果。在 main 方法中,定义了一个整型数组 arr,调用 insertionSort 方法对其进行排序,并输出排序结果。
需要注意的是,该示例代码中使用了尖括号表示小于和大于符号,这是因为在 HTML 中,这些符号有特殊含义,需要进行转义。在实际编写代码时,应该使用正常的小于和大于符号。
请用Java代码示例教我插入排序以及插入排序的优化
以下是Java代码示例,包括插入排序和插入排序的优化:
1. 插入排序
```java
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
```
2. 插入排序的优化
```java
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
// 使用二分查找找到插入位置
int pos = binarySearch(arr, 0, j, key);
// 将插入位置之后的元素全部后移一位
System.arraycopy(arr, pos, arr, pos + 1, i - pos);
// 将元素插入到正确的位置
arr[pos] = key;
}
}
private static int binarySearch(int[] arr, int left, int right, int target) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left;
}
```