06.21 学C语言的都会的冒泡排序

学C语言的都会的冒泡排序

我们在制作些东西的时候,很多时候需要我们对数组的值进行排序,这样可以让我们在整理和查找数据的时候更加容易找到。

对数组元素进行排序的方法呢也有很多种,比如冒泡排序、归并排序、选择排序、插入排序、快速排序等,其中最经典最需要掌握的是「冒泡排序」。

它的思路是,那数组第一个数和下一个数进行比较,两者之中大的那个会用来和下一个数继续比较,一直重复,一轮过后,最大的那个书就会出现在数组的最后那一位。任何再用第一个数进行以上的操作。

我下面打个比方。

比如一组数2.4.3.1.

(2 4)3 1 一开始第一个数和第二个数进行比较。

2(4 3)1 然后那第一轮中的大者 与下一个数比较。4比3大,所以他们会交换位置。

2 3 (4 1) 然后第二轮中的大者 与下一个数进行比较。

2 3 1 4 第一轮结束,最大的4已经在最右边了。

任何就是重复上面的操作直到摆列完毕。

下面上代码。

  1. #include <stdio.h>
  2. int main(){
  3. int array1[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
  4. int i, j, array2;
  5. //冒泡排序算法:进行 n-1 轮比较
  6. for(i=0; i<10-1; i++){
  7. //每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较
  8. for(j=0; j<10-1-i; j++){
  9. if(array1[j] >array1[j+1]){
  10. array2 = array1[j];
  11. array1[j] = array1[j+1];
  12. array1[j+1] = array2;
  13. }
  14. }
  15. }
  16. //输出排序后的数组
  17. for(i=0; i<10; i++){
  18. printf("%d ", array1[i]);
  19. }
  20. printf("\\n");
  21. return 0;
  22. }

其实上面的这个方法对于短的数组不会怎么样,假如是特别长的数组就会多出很多的计算量。因为后面的数已经都排列好了,再去多次一举比较他们就毫无意义了。后面这个想法告诉你们了 但我不会放原码。自己试去,不敲代码怎么学得会?如果有想要学习C语言呢,或者再学习C语言的可以,私聊我发送“C语言”虽然c语言简单,但是一些更加重要的知识是教科书上没有的。需要学习者自己尝试。所以有对于学习者来说,有个好的交流环境,学习资料是特别重要的。我会给大家提供一些帮助、建议,但也希望大家多去实践自己获取学习到的知识。

今天文章就到这了,假如感觉我文章还可以的可以、关注,转发、收藏、评论。拜!


分享到:


相關文章: