首页 > 编程语言 > 详细

2.1 初级排序算法

时间:2019-04-27 14:42:10      阅读:131      评论:0      收藏:0      [点我收藏+]

2.1demo的C语言实现

/*
 * 实现数组从小到大顺序排列
 */
#include <stdio.h>
#include <stdlib.h>

#define less(a,b) (a<b)
#define exch(array, a, b) do {        int tmp = array[a];                array[a] = array[b];            array[b] = tmp;                } while(0)

/*
 * 选择排序法
 */
void selectSort(int *array, int size)
{
    int i, j;

    for (i = 0; i < size; i++) {
        int min = i;
        for (j = i+1; j < size; j++) {
            if (less(array[j], array[min]))
                min = j;
        }
        exch(array, i, min);
    }
}
/*
 * 插入排序法
 */
void insertSort(int *array, int size)
{
    int i, j;

    for (i = 1; i < size; i++) {
        for (j = i; j>0 && less(array[j], array[j-1]); j--) {
            exch(array, (j-1), j);
        }
    }
}

void show(int *array, int size)
{
    int i;
    for (i = 0; i < size; i++) {
        printf("%d\n", array[i]);
    }

    printf("\n");
    return;
}

int isSorted(int *array, int size)
{
    int i;
    for (i = 1; i < size; i++)
        if (!less(array[i-1], array[i])) 
            return 0;

    return 1;
}


void init_array(int *array, int size)
{
    int i;
    for (i = 0; i < size; i++) {
        array[i] = random();
    }
    
}

#define DEFAULT_SIZE 20

int main()
{
    int *array = malloc(DEFAULT_SIZE*sizeof(int));

    init_array(array, DEFAULT_SIZE);
    show(array, DEFAULT_SIZE);
    selectSort(array, DEFAULT_SIZE);
    show(array, DEFAULT_SIZE);
    insertSort(array, DEFAULT_SIZE);
    show(array, DEFAULT_SIZE);

    return 0;
}

 

2.1 初级排序算法

原文:https://www.cnblogs.com/rivsidn/p/10778664.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!