冒泡、选择、插入排序

#include <stdio.h>

//1.冒泡排序法
void BubbleSort(int arr[], int n)
{
    int i, j, tmp;
    for(i = 0; i < n - 1; ++i)
    {
        for(j = 1; j < n - i; ++j)
        {
            if(arr[j - 1] > arr[j])
            {
                //如果前一个大于后一个就进行交换
                tmp = arr[j - 1];
                arr[j - 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
//2.选择排序
void SelectSort(int arr[], int n)
{
    int i, j, min, tmp;
    for(i = 0; i < n - 1; ++i)
    {
        min = i;
        for(j = i + 1; j < n; ++j)
        {
            if(arr[j] < arr[min])
                min = j;//如果发现比默认最小值还小的值,就记录下该数的下标
        }
        if(min != i)
        {
            tmp = arr[i];
            arr[i] = arr[min];
            arr[min] = tmp;
        }
    }
}
//3.插入排序
void InsertSort(int arr[], int n)
{
    int i, index, tmp;
    for(i = 1; i < n; ++i)
    {
        index = i;//记录当前的数值的下标
        while(index && arr[index] < arr[index - 1])//如果它小于它的前一个数值
        {
            //进行交换
            tmp = arr[index];
            arr[index] = arr[index - 1];
            arr[index - 1] = tmp;
            --index;
        }
    }
}

int main()
{
    int i, arr[] = {100, -2, 7, -5,10};
    //数组所占的总字节数/每个元素的字节数==数组元素的个数
//    BubbleSort(arr, sizeof(arr) / sizeof(arr[0]));
//    SelectSort(arr, sizeof(arr) / sizeof(arr[0]));
    InsertSort(arr, sizeof(arr) / sizeof(arr[0]));
    
    for(i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)
        printf("%3d", arr[i]);
    printf("\n");
    
    return 0;
}

 

posted @ 2017-09-04 20:52  gd_沐辰  阅读(161)  评论(0编辑  收藏  举报