算法基础1:冒泡排序

来源:互联网 发布:mac常用软件 编辑:程序博客网 时间:2024/05/17 14:14
#include <stdio.h>#define MAXLEN 100void swap(int* a, int* b);void bubbleSort(int arr[], int length);     // 递归版void bubbleSort2(int arr[], int length);    // 非递归版void showSeq(int arr[], int length);        // 显示序列int main(){    int i, n, nums[MAXLEN];    while (1 == scanf("%d", &n))    {        for (i = 0; i < n; i++)            scanf("%d", &nums[i]);        showSeq(nums, n);        // bubbleSort(nums, n);        bubbleSort2(nums, n);        showSeq(nums, n);    }    return 0;}void swap(int* a, int* b){    int temp = *a;    *a = *b;    *b = temp;}void bubbleSort(int arr[], int length)    // 递归版{    if (1 == length) return;    // 长度为1时为平凡情况    int i;    for (i = 1; i < length; i++)        if (arr[i-1] > arr[i])            swap(&arr[i-1], &arr[i]);    bubbleSort(arr, length - 1);}void bubbleSort2(int arr[], int length)    // 非递归版{    int i, sorted = 0;    while (!sorted)    {        sorted = 1;        for (i = 1; i < length; i++)        {            if (arr[i-1] > arr[i])                swap(&arr[i-1], &arr[i]);            sorted = 0;        }        length--;    // 待排序长度减一    }}void showSeq(int arr[], int length){    int i = 0;    while (i < length)        printf("%d ", arr[i++]);    putchar('\n');}
0 0
原创粉丝点击