当前位置:   article > 正文

java-排序算法

java-排序算法

冒泡排序

这个不多做解释,比较简单,直接看图

选择排序

也比较简单

插入排序

思路如下图所示

如何来理解这个方法,我们举个例子来说明一下

给出一段数据为:3,44,38,5,47,15,36,26,27,2,46,4,19,50,48

目的:对它进行排序

代码如下:

  1. package aaa;
  2. public class ccc {
  3. public static void main(String[] args) {
  4. int []arr={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
  5. int startIndex=-1;
  6. //第一步找到从哪个索引开始无序
  7. for (int i = 0; i < arr.length; i++) {
  8. if(arr[i]>arr[i+1]){
  9. startIndex=i+1;
  10. break;
  11. }
  12. }
  13. //下面段代码是重点,认真梳理一下还是比较好懂的
  14. for (int i = startIndex; i < arr.length; i++) {
  15. int j=i;
  16. while(j>0&&arr[j]<arr[j-1]){
  17. int temp=arr[j];
  18. arr[j]=arr[j-1];
  19. arr[j-1]=temp;
  20. j--;
  21. }
  22. }
  23. for (int i = 0; i < arr.length; i++) {
  24. System.out.print(arr[i]+" ");
  25. }
  26. }
  27. }

下图解析更加详细

快速排序

首先引入递归这个概念这个之前学学过,反正就是函数反复调用本身不多加解释

注意递归函数一定要有出口,避免内存溢出,出口就是止提前终止程序的代码,和之前避免死循环的代码是类似的

快速排序的特点:快

思路如下图

我们还是举一个例子

给出一组数据为:6,1,2,7,9,3,4,5,10,8

利用快排进行排序的代码如下

  1. package aaa;
  2. public class ddd {
  3. public static void main(String[] args) {
  4. int []arr={6,1,2,7,9,3,4,5,10,8};
  5. quickSort(arr,0,arr.length-1);
  6. for (int i = 0; i < arr.length; i++) {
  7. System.out.print(arr[i]+" ");
  8. }
  9. }
  10. public static void quickSort(int[]arr,int i,int j){
  11. int start=i;
  12. int end=j;
  13. if(start>end)
  14. {
  15. return;
  16. }
  17. int baseNumber=arr[i];
  18. while(start!=end){
  19. //******注意一定要先end,再start****
  20. while(true){
  21. if(end<=start||(arr[end]<baseNumber)){
  22. break;
  23. }
  24. end--;
  25. }
  26. while(true){
  27. if(end<=start||(arr[start]>baseNumber)){
  28. break;
  29. }
  30. start++;
  31. }
  32. int temp=arr[start];
  33. arr[start]=arr[end];
  34. arr[end]=temp;
  35. }
  36. int temp=arr[i];
  37. arr[i]=arr[start];
  38. arr[start]=temp;
  39. quickSort(arr,i,start-1);
  40. quickSort(arr,start+1,j);
  41. }
  42. }

这里要注意:一定要先end再strat,至于为什么,自己可以试试先start再end,会出现什么错误

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/217986
推荐阅读
相关标签
  

闽ICP备14008679号