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

前言

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

选择排序

选择排序(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]);
}

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

控制台输出

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

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

推荐阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,392评论 0 1
  • 写在前边:这篇文章又臭又长,纯属个人无聊总结之作,如果您恰好看见了,有恰好有兴趣,建议您找个空闲时间阅读。 [TO...
    John_Tsemin阅读 2,554评论 2 5
  • Ba la la la ~ 读者朋友们,你们好啊,又到了冷锋时间,话不多说,发车! 1.冒泡排序(Bub...
    王饱饱阅读 1,816评论 0 7
  • 新乡学院 爱是一种微妙的滋养 人生在世,总会遇到各种各样的事情,爱便是其中之一。爱是一个泛指,爱包括很多,...
    葬月仙阅读 1,007评论 0 0
  • 每日必读:12条人生原则 1. 早睡早起——晚不超过23:30,早不晚于5:00,醒后不睡回笼觉。 2. 谨言——...
    衡山阅读 338评论 0 1