插入排序

作者: tingshuo123 | 来源:发表于2017-09-11 20:20 被阅读4次
#include <stdio.h>
void InsertionSort(int a[], int size);

int main(void)
{
    int arr[] = {1, -3, 5, 0, 9 ,6, 4};
    InsertionSort(arr, sizeof(arr)/sizeof(arr[0]));

    unsigned int i;
    for (i=0; i<sizeof(arr)/sizeof(arr[0]); i++){
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
    
}

void InsertionSort(int a[], int size)
{
    int i, j, k;
    for (i=1; i<size; i++){
        // a[i] 是最左边的无序元素,每次循环将 a[i] 插入合适的位置
        for (j=0; j<i; j++){
            // 找合适位置
            if (a[j] > a[i]){
                int tmp = a[i];
                // 将下标 j 到 i-1 的元素往后挪一个位置
                for (k=i; k>j; k--){
                    a[k] = a[k-1];
                    }
                a[j] = tmp;
                break;
            }
        }
    }
}

排序后结果:

结果.png

相关文章

网友评论

    本文标题:插入排序

    本文链接:https://www.haomeiwen.com/subject/tgofsxtx.html