美文网首页C
【C】选择排序与冒泡排序区别及其过程

【C】选择排序与冒泡排序区别及其过程

作者: Colleny_Z | 来源:发表于2017-08-14 14:49 被阅读27次

前言

在最初的刚接触排序的时候,起初我确实只是简单的能写出过程,但是却没有详细的去了解选择与冒泡排序之间的区别。后来用代码测试验证后,才明白两者的区别。

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

通俗的讲就是,每一次循环,都是拿当前索引去挨个比,找出最值,放大此索引中。如果有2个数,需要循环1次,如果有N个数,需要循环N-1次。代码如下:

int nums[10]={100,34,288,1,199,199,288,0,10,3};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < lenth-1; i++) {
    for (int j = i+1; j < lenth; j++) {
        if (nums[i]<nums[j]) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
    printf("第%i比较后 \n",i+1);
    for (int m = 0; m<lenth; m++) {
        printf("%i    ",nums[m]);
    }
    
    printf("\n\n");
}

 printf("排序结果为:\n");
for (int i = 0; i<lenth; i++) {
     printf("%i   ",nums[i]);
}
printf("\n\n");
}

以上就是选择排序,结果可自行打印就可清晰看到整个过程了。

冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。代码如下:

int nums[4]={100,34,288,1};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i=0; i < lenth-1; i++) {
    for (int j = 0; j < lenth - 1 - i; j++) {
       // printf("%i----%i\n",j,j+1);
        if (nums[j] > nums[j+1]) {
            int temp = nums[j];
            nums[j] = nums[j+1];
            nums[j+1] = temp;
        }
        
        
    }
    
    printf("第%i次排序后:",i+1);
    for (int i = 0; i<lenth; i++) {
        printf("%i  ",nums[i]);
    }
    printf("\n");
}

printf("最终的排序结果\n\n");
for (int i = 0; i<lenth; i++) {
    printf("%i  ",nums[i]);
}

以上就是冒泡排序,过程也可自行进行打印。

控制台输出

当然排序的算法还有很多种,后续再继续测试说明快速排序。

相关文章

  • 【C】选择排序与冒泡排序区别及其过程

    前言 在最初的刚接触排序的时候,起初我确实只是简单的能写出过程,但是却没有详细的去了解选择与冒泡排序之间的区别。后...

  • php常用算法汇总

    排序 1.冒泡排序 遍历数组依次比较对换。 2.选择排序 选择排序与冒泡排序类似,区别在于冒泡是每次都对换位置;选...

  • 排序算法

    C++ 冒泡排序 选择排序 变种 插入排序

  • C语言中排序方法的使用

    C语言中排序方法 学习目的 今天我们学习了三种排序方法:冒泡排序法、选择排序法、插入排序法。 相关技术,及其实用 ...

  • 常用排序算法

    目录 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 堆排序 致谢 1. 冒泡排序 C实现,从小到大 ...

  • 冒泡排序 选择排序

    冒泡排序 java 实现 C 实现 选择排序 java 实现 C 实现

  • 简单算法之冒泡与选择排序

    冒泡排序 选择排序 冒泡排序与选择排序的时间复杂度是相同的,选择排序更像是冒泡排序的一半,注意两种排序排列方向问题

  • 基本算法

    冒泡排序、插入排序、选择排序、快速排序、二分查找(Objective-C实现)

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

  • Js冒泡排序&选择排序

    title: Js冒泡排序&选择排序date: 2018-05-03 23:00:00tags: 基础排序冒泡法c...

网友评论

    本文标题:【C】选择排序与冒泡排序区别及其过程

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