冒泡排序和选择排序

今天复习了三种排序方法,冒泡排序、选择排序、桶排序,感觉好长时间没写都忘差不多了

接下来开始学数据结构

1.冒泡排序

冒泡排序两个两个交换,进行n-1轮

#include <stdio.h>
int main(int argc, char const *argv[])
{
    // 8 100 50 22 15 6 1 1000 999 0
    //从小到大排序
    int nums[10] = {8, 100, 50, 22, 15, 6, 1, 1000, 999, 0};
    int temp;
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10 - i; j++)
        {
            if (nums[j] > nums[j + 1])
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
        }
    }

    for (int i = 0; i < 10; i++)
    {
        printf("%d ", nums[i]);
    }

    getchar();
    getchar();
    return 0;
}

2.选择排序

选择排序每次确定一个位置的值,进行n-1轮

#include <stdio.h>
int main(int argc, char const *argv[])
{
    // 8 100 50 22 15 6 1 1000 999 0
    int nums[10] = {8, 100, 50, 22, 15, 6, 1, 1000, 999, 0};
    int temp;
    for (int i = 0; i < 9; i++)
    {
        for (int j = i + 1; j < 10; j++)
        {
            if (nums[i] > nums[j])
            {
                temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
        printf("%d ", nums[i]);
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", nums[i]);
    }

    getchar();
    getchar();
    return 0;
}

3.桶排序

这是简单版的桶排序

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, m;
    int num[10];
    // 注意必须初始化不然会有随机值,会影响结果  特别注意!!!!!!!
    for (int i = 0; i <= 10; i++)
    {
        num[i] = 0;
    }

    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &m);
        num[m]++;
    }

    for (int i = 0; i <= 10; i++)
    {
        for (int j = 0; j < num[i]; j++)
        {
            printf("%d ", i);
        }
    }

    system("pause");
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容