首页 > 编程语言 > 详细

各种排序(c语言)

时间:2020-08-15 00:48:39      阅读:71      评论:0      收藏:0      [点我收藏+]
typedef int ELemType;

// 冒泡排序
void bubbleSort(ELemType arr[], int len)
{
    int i, j, temp;
    for (i = 1; i < len; i++)
    {
        for (j = 0; j < len - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 插入排序
void insertSort(ELemType arr[], int len)
{
    int i, j, temp;
    for (i = 1; i < len; i++)
    {
        temp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > temp; j--)
            arr[j + 1] = arr[j];
        arr[j + 1] = temp;
    }
}

// 选择排序
void selectSort(ELemType arr[], int len)
{
    int i, j, temp;
    for (i = 0; i < len; i++)
    {
        for (j = i + 1; j < len; j++)
        {
            if (arr[i] > arr[j])
            {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}


// 归并排序
void mergeSort(ELemType arr[], int start, int end, int temp[])
{
    if (start >= end) return;
    int mid = (start + end) / 2;
    int i = start, j = mid + 1;
    int index = 0;
    mergeSort(arr, start, mid, temp);
    mergeSort(arr, mid + 1, end, temp);
    while (i <= mid && j <= end)
    {
        if (arr[i] >= arr[j])
        {
            temp[index] = arr[j];
            j++;
        }
        else
        {
            temp[index] = arr[i];
            i++;
        }
        index++;
    }
    while (i <= mid)
    {
        temp[index] = arr[i];
        i++;
        index++;
    }
    while (j <= end)
    {
        temp[index] = arr[j];
        j++;
        index++;
    }
    for (i = start, j = 0; i <= end; i++, j++)
        arr[i] = temp[j];
}

// 快速排序
void quicklySort(ELemType arr[], int start, int end)
{
    int base = arr[(start + end) / 2];
    int i = start, j = end, temp;
    if (start >= end) return;
    while (i <= j)
    {
        while (base > arr[i]) i++;
        while (base < arr[j]) j--;
        if (i <= j)
        {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }
    quicklySort(arr, start, j);
    quicklySort(arr, i, end);
}

 

各种排序(c语言)

原文:https://www.cnblogs.com/li1234567980/p/13507150.html

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