数据结构算法学习-排序-插入排序

排序

讲一组有顺序的元素按大小(只要定义可以返回true或false的比较关系,非一定数值比较)重新调整顺序。

插入排序

思维上最直接的方式吧,将原序列元素一个个取出,放回时找到合适位置放入b,既a<=b

算法实现

long long int* elrSortInsert(long long int* arr, int len) {
    int i, j, k;
    long long int n;
    if (arr) {
        for (i = 1; i < len; i++) {
            n = arr[i];
            for (j = i - 1; j >= 0;  j--) {
                if (arr[j] > n) {
                    arr[j + 1] = arr[j];
                    arr[j] = n;
                    for (k = 0; k < len; k++) {
                        printf("%lld   ", arr[k]);
                    }
                    printf("\n");
                } else {
                    break;
                }
            }
        }
    }

    return arr;
}

调试调用

int main(int argc, char **argv){
    long long int arr[] = {6, 2, 4, 1, 3, 5, 0};
    elrSortInsert(arr, 7);
    return 0;
}

输出

2   6   4   1   3   5   0   
2   4   6   1   3   5   0   
2   4   1   6   3   5   0   
2   1   4   6   3   5   0   
1   2   4   6   3   5   0   
1   2   4   3   6   5   0   
1   2   3   4   6   5   0   
1   2   3   4   5   6   0   
1   2   3   4   5   0   6   
1   2   3   4   0   5   6   
1   2   3   0   4   5   6   
1   2   0   3   4   5   6   
1   0   2   3   4   5   6   
0   1   2   3   4   5   6 

你可能感兴趣的:(c,算法-数据结构,插入排序)