设为首页 - 加入收藏 吉林买足彩怎样倍投 (http://www.0432zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 优化 为什么 易读 阿里
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

常用排序算法总结

发布时间:2019-09-22 05:21 所属栏目:[优化] 来源:阿里云云栖社区
导读:概述 在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序,分别使用Java代码实现,简要使用图例

?概述

在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序,分别使用Java代码实现,简要使用图例方式介绍其实现原理。

算法原理及实现

1、冒泡排序

  • 原理图

常用排序算法总结

  • 理解

通过重复地遍历要排序的列表,比较每对相邻的项目,并在顺序错误的情况下交换它们。

  • Java Code
  1. public?class?BubbleSort?{?
  2. ?
  3. ????//?logic?to?sort?the?elements?
  4. ????public?static?void?bubble_srt(int?array[])?{?
  5. ????????int?n?=?array.length;?
  6. ????????int?k;?
  7. ????????for?(int?m?=?n;?m?>=?0;?m--)?{?
  8. ????????????for?(int?i?=?0;?i?
  9. ????????????????k?=?i?+?1;?
  10. ????????????????if?(array[i]?>?array[k])?{?
  11. ????????????????????swapNumbers(i,?k,?array);?
  12. ????????????????}?
  13. ????????????}?
  14. ????????????printNumbers(array);?
  15. ????????}?
  16. ????}?
  17. ?
  18. ????private?static?void?swapNumbers(int?i,?int?j,?int[]?array)?{?
  19. ?
  20. ????????int?temp;?
  21. ????????temp?=?array[i];?
  22. ????????array[i]?=?array[j];?
  23. ????????array[j]?=?temp;?
  24. ????}?
  25. ?
  26. ????private?static?void?printNumbers(int[]?input)?{?
  27. ?
  28. ????????for?(int?i?=?0;?i?
  29. ????????????System.out.print(input[i]?+?",?");?
  30. ????????}?
  31. ????????System.out.println("\n");?
  32. ????}?
  33. ?
  34. ????public?static?void?main(String[]?args)?{?
  35. ????????int[]?input?=?{?4,?2,?9,?6,?23,?12,?34,?0,?1?};?
  36. ????????bubble_srt(input);?
  37. ????}?
  38. }?

2、选择排序

  • 原理图

常用排序算法总结

  • 理解

内部循环查找下一个最小(或最大)值,外部循环将该值放入其适当的位置。

  • Java Code
  1. public?class?SelectionSort?{?
  2. ?
  3. ????public?static?int[]?doSelectionSort(int[]?arr){?
  4. ?
  5. ????????for?(int?i?=?0;?i?
  6. ????????{?
  7. ????????????int?index?=?i;?
  8. ????????????for?(int?j?=?i?+?1;?j?
  9. ????????????????if?(arr[j]?
  10. ????????????????????index?=?j;?
  11. ?
  12. ????????????int?smallerNumber?=?arr[index];???
  13. ????????????arr[index]?=?arr[i];?
  14. ????????????arr[i]?=?smallerNumber;?
  15. ????????}?
  16. ????????return?arr;?
  17. ????}?
  18. ?
  19. ????public?static?void?main(String?a[]){?
  20. ?
  21. ????????int[]?arr1?=?{10,34,2,56,7,67,88,42};?
  22. ????????int[]?arr2?=?doSelectionSort(arr1);?
  23. ????????for(int?i:arr2){?
  24. ????????????System.out.print(i);?
  25. ????????????System.out.print(",?");?
  26. ????????}?
  27. ????}?
  28. }?

冒泡排序和选择排序的区别

1、冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值;

2、冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置;

3、冒泡排序是通过数去找位置,选择排序是给定位置去找数。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章