编程实现直接插入排序算法JAVA
时间: 2023-07-26 19:11:58 浏览: 105
下面是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;
}
}
```
此算法的时间复杂度为O(n^2),是一种稳定的排序算法。
相关问题
c语言编程实现直接插入排序
好的,以下是C语言编程实现直接插入排序的代码:
```c
void insertionSort(int arr[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
```
其中,`arr`是待排序的数组,`n`是数组的长度。该算法的思路是,将数组分为两部分,一部分是已经排好序的,一部分是未排序的。每次从未排序的部分中取出一个元素,并将它插入到已排序的部分中的正确位置。
具体来说,从第二个元素开始,将其作为“关键字”(即待插入的元素),与已排序的部分从后往前比较,找到它的正确位置,然后将已排序部分中比它大的元素后移一位,最后将它插入到正确位置。重复以上步骤,直到将所有元素都插入到已排序的部分中。
直接插入排序算法java
以下是Java中直接插入排序算法的实现:
```java
public class InsertionSort {
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;
}
}
public static void main(String[] args) {
int[] arr = { 12, 11, 13, 5, 6 };
insertionSort(arr);
System.out.println(Arrays.toString(arr));
}
}
```
在这个例子中,我们定义了一个名为`insertionSort`的静态方法,它接受一个整数数组作为参数,并使用直接插入排序算法对其进行排序。在`main`方法中,我们创建了一个整数数组并将其传递给`insertionSort`方法进行排序。最后,我们使用`Arrays.toString`方法打印已排序的数组。
阅读全文