使用插入排序对给定数组从小到大排序,不需要输出排序后的数组,需输出从第二个元素开始每个元素 插入的的位置JAVA
时间: 2024-03-14 12:47:08 浏览: 16
好的,下面是使用插入排序对给定数组从小到大排序的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;
// 找到第一个比 key 小的元素的位置
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
// 输出插入位置
System.out.print("插入位置为:[");
for (int k = 0; k <= i; k++) {
if (k == i) {
System.out.print(j + 1);
} else {
System.out.print(k <= j ? k : k + 1);
}
if (k != i) {
System.out.print(", ");
}
}
System.out.println("]");
}
}
```
我们定义一个函数 `insertionSort`,输入一个整型数组 `arr`,并使用插入排序算法对其进行排序。在排序的过程中,我们记录每个元素插入的位置,并在排序完成后输出。
具体来说,我们从数组的第二个元素开始往前遍历,找到第一个比当前元素小的位置(即插入位置),然后将该位置之后的元素都往后移一位,最后将当前元素插入到插入位置。
代码中,我们使用变量 `j` 记录插入位置,然后在循环结束后输出。如果当前元素是第一个元素,那么插入位置就是 0;如果当前元素不是第一个元素,那么插入位置要么是 `j + 1`,要么是原来的位置加 1。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)