用两个for循环实现完成下面的函数,实现对整数数组的插入排序功能。(5分) void sort(int *array, int array_num)
时间: 2024-02-20 22:59:32 浏览: 43
好的,以下是用两个for循环实现插入排序的代码:
```c++
void sort(int *array, int array_num){
int key, j;
for (int i = 1; i < array_num; i++){
key = array[i];
j = i - 1;
while (j >= 0 && key < array[j]){
array[j+1] = array[j];
j--;
}
array[j+1] = key;
}
}
```
我们先遍历数组,从第二个元素开始(因为第一个元素可以看作已经排序好了)。
然后,我们将当前元素存储在一个变量 `key` 中,用 `j` 来记录前一个元素的下标。
我们在 while 循环中比较 `key` 和 `array[j]` 的大小。如果 `key` 比 `array[j]` 小,我们就把 `array[j]` 向右移动一位,然后将 `j` 减 1,继续向左比较。直到找到一个位置,使得 `key` 大于等于 `array[j]`。
然后,我们将 `key` 插入到 `array[j+1]` 的位置上。
重复以上步骤,直到数组被排序好。
希望能帮到你。
相关问题
用两个for循环实现完成下面的函数,实现对整数数组的排序功能,并注明使用的排序算法。(5分) void sort(int *array, int array_num)
好的,以下是用两个for循环实现排序的代码,采用的是选择排序算法:
```c++
void sort(int *array, int array_num){
int min_index, temp;
for (int i = 0; i < array_num - 1; i++){
min_index = i;
for (int j = i + 1; j < array_num; j++){
if (array[j] < array[min_index]){
min_index = j;
}
}
if (min_index != i){
temp = array[i];
array[i] = array[min_index];
array[min_index] = temp;
}
}
}
```
我们先遍历数组,对于每个元素,我们都在剩余的元素中找到最小的元素,并记录下其下标 `min_index`。
然后,我们将最小元素与当前元素互换位置。这样,当前元素就被放在了正确的位置上。
重复以上步骤,直到数组被排序好。
希望能帮到你。
完成下面的函数,实现对整数数组的排序功能,并注明使用的排序算法。(5分) void sort(int *array, int array_num)
好的,我可以帮您完成这个函数。这里我使用插入排序算法来对整数数组进行排序。以下是函数的实现:
```c++
void insertionSort(int *array, int array_num) {
for (int i = 1; i < array_num; i++) {
int key = array[i];
int j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
}
void sort(int *array, int array_num) {
insertionSort(array, array_num);
}
```
这里我们使用了插入排序算法,时间复杂度为 $O(n^2)$。虽然插入排序算法的时间复杂度较高,但是对于小规模的数据排序效率还是很高的。
阅读全文