用两个for循环实现插入排序算法
时间: 2023-07-12 10:16:07 浏览: 92
好的,以下是用两个for循环实现插入排序算法的代码:
```python
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
```
我们先遍历数组,从第二个元素开始(因为第一个元素可以看作已经排序好了)。
然后,我们将当前元素存储在一个变量 `key` 中,用 `j` 来记录前一个元素的下标。
我们在 while 循环中比较 `key` 和 `arr[j]` 的大小。如果 `key` 比 `arr[j]` 小,我们就把 `arr[j]` 向右移动一位,然后将 `j` 减 1,继续向左比较。直到找到一个位置,使得 `key` 大于等于 `arr[j]`。
然后,我们将 `key` 插入到 `arr[j+1]` 的位置上。
重复以上步骤,直到数组被排序好。
希望能帮到你。
相关问题
java实现插入排序
插入排序是一种简单的排序算法。它的基本思想是,将一个待排序的序列分为两部分,一部分是已排好序的,另一部分是未排序的。每次从未排序的部分取出一个元素,将它插入到已排序部分的适当位置。
Java实现插入排序的代码如下:
```
public static void insertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
```
上面的代码使用了两重循环,外层循环枚举未排序部分的元素,内层循环在已排序部分中找到适当的位置并进行插入。
这段代码的时间复杂度为O(n^2),空间复杂度为O(1)。
如何使用for循环 排序
在使用 for 循环进行排序时,你需要使用一种排序算法,例如冒泡排序、选择排序、插入排序等。这里以冒泡排序为例,给出一个示例代码:
```
int arr[] = {4, 2, 8, 1, 3, 5, 7, 6};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出排序后的数组
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
```
在上面的示例代码中,我们使用了两个嵌套的 for 循环,第一个 for 循环用于控制排序的轮次,第二个 for 循环用于进行相邻元素的比较和交换。在每一轮的排序中,我们比较相邻的元素,如果前一个元素比后一个元素大,则交换它们的位置。通过多次轮次的比较和交换,最终可以将数组排序。
相关推荐
![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)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)