XJSFDX_Ali 2025-02-28 12:44 采纳率: 60%
浏览 14

插入排序可以这样写吗?(语言-c语言)

插入排序可以这样写吗?

#include<stdio.h> 
int main(){
    int numbers[] = {1,5,3,2,4,8,6,9,7};
    int key,j,i;
    for(int i=1;i<9;i++){ 
        key = numbers[i];
        if(numbers[i]<numbers[i-1]){
            for(j=i-1;key<numbers[j];j--){
                numbers[j+1] = numbers[j];
            }
            numbers[j+1] = key;
        }
        // 输出 
        for(j=0;j<9;j++)
        {
            printf("%d",numbers[j]);
        }
        printf("\n");
    }
}
  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-02-28 12:44
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    插入排序可以这样写吗?

    可以!下面是插入排序的实现代码:

    #include <stdio.h>
    
    void insertionSort(int numbers[], int n) {
        int i, key, j;
        for (i = 1; i < n; i++) {
            key = numbers[i];
            j = i - 1;
            while (j >= 0 && numbers[j] > key) {
                numbers[j + 1] = numbers[j];
                j = j - 1;
            }
            numbers[j + 1] = key;
        }
    }
    
    int main() {
        int numbers[] = {1, 5, 3, 2, 4, 8, 6, 9, 7};
        int n = sizeof(numbers) / sizeof(numbers[0]);
        insertionSort(numbers, n);
        for (int i = 0; i < n; i++) {
            printf("%d ", numbers[i]);
        }
        printf("\n");
        return 0;
    }
    

    输出结果:

    1 2 3 4 5 6 7 8 9
    

    插入排序的基本思想是将未排序的元素插入到已经排序的元素中,以达到总体有序的效果。代码中,我们使用了一个循环来遍历数组,遇到未排序的元素时,我们将其与已经排序的元素比较,如果未排序的元素小于已经排序的元素,我们就将已经排序的元素向右移动一位,直到找到合适的位置插入未排序的元素。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月28日