美文网首页
排序算法动图加非伪代码通俗详解

排序算法动图加非伪代码通俗详解

作者: 2f0ecb8408ad | 来源:发表于2020-04-23 09:32 被阅读0次

所有排序算法

image.png

1.冒泡排序
每次交换2个,交换到最后的那个数是最大的


image

#include<stdio.h>
#include<stdlib.h>
 
void BubbleSort(int a[], int len)
{
    int i, j, temp;
    for (j = 0; j < len - 1; j++)
    {
        for (i = 0; i < len - 1 - j; i++)
        if (a[i] > a[i + 1])
        {
            temp = a[i];
            a[i] = a[i + 1];
            a[i + 1] = temp;
        }
    }
}
 
int main()
{
    int arr[] = { 5, 8, 6, 3, 9, 2, 1, 7 };
    int len = sizeof(arr) / sizeof(arr[0]);
    int i = 0;
    printf("排序前:");
    for (i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
 
    BubbleSort(arr, len);
    printf("排序后:");
    for (i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,


image
void swap(int *a,int *b) //交換兩個變數
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
void selection_sort(int arr[], int len) 
{
    int i,j;

        for (i = 0 ; i < len - 1 ; i++) 
    {
                int min = i;
                for (j = i + 1; j < len; j++)     //走訪未排序的元素
                        if (arr[j] < arr[min])    //找到目前最小值
                                min = j;    //紀錄最小值
                swap(&arr[min], &arr[i]);    //做交換
        }
}

完整代码

#include <stdio.h>
int main()
{
    int i,j,t,a[11];    //定义变量及数组为基本整型
    printf("请输入10个数:\n");
    for(i=1;i<11;i++)
        scanf("%d",&a[i]);    //从键盘中输入要排序的10个数字
    for(i=1;i<=9;i++)
        for (j=i+1;j<=10;j++)
            if(a[i]>a[j])    //如果前一个数比后一个数大,则利用中间变量t实现两值互换
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    printf("排序后的顺序是:\n");
    for(i=1;i<=10;i++)
        printf("%5d", a[i]);    //输出排序后的数组
    printf("\n");
    return 0;
}

相关文章

  • 排序算法动图加非伪代码通俗详解

    所有排序算法 1.冒泡排序每次交换2个,交换到最后的那个数是最大的image 选择排序首先在未排序序列中找到最小(...

  • 排序算法

    常见排序算法 本文涉及的算法有:冒泡排序选择排序计数排序 冒泡排序 伪代码 流程图 选择排序 伪代码 流程图 计数...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 计数排序

    计数排序伪代码: 计数排序流程图:

  • 数据结构 - 归并排序

    归并排序 - 算法思路 归并排序 - 动图演示 时间复杂度 O(nlogn) 代码实现 printVector: ...

  • 值得键盘敲烂的代码 (冒泡排序)

    排序算法 冒泡排序 冒泡排序动图: 感谢博主: 的博客中的动图

  • 数据结构与算法系列 (2) 排序算法-->java篇

    算法是程序的灵魂 简述 1.冒泡排序 1.1 算法描述 1.2 动图演示 1.3代码实现 2、选择排序(Selec...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • 排序算法总结

    JavaScript实现十大排序算法,代码+动图+在实现代码的时候遇到的坑 冒泡算法 (1) 实现思路 不断的重复...

网友评论

      本文标题:排序算法动图加非伪代码通俗详解

      本文链接:https://www.haomeiwen.com/subject/pbonihtx.html