冒泡排序法流程图讲解,冒泡排序法详细讲解

首页 > 教育 > 作者:YD1662024-05-15 14:50:31


2 .对于右侧序列来说,先用K储存a[low]=8我们先从右侧找到第一个小与8的数字4。

冒泡排序法流程图讲解,冒泡排序法详细讲解(9)


3 .我们将它放到low位置替换,然后从low位置向右找到第一个大于k=8的再同样放到右侧。我们找到9,把9赋值给high位置。

冒泡排序法流程图讲解,冒泡排序法详细讲解(10)


4 .重复上面步骤直到high

冒泡排序法流程图讲解,冒泡排序法详细讲解(11)


5 .就这样重复下去,直到整个序列有序即可!


代码

在书写代码的时候,要注意一些顺序,防止数组越界情况,可以写好debug一遍其实就很好理解了!当写代码遇到错误时候,不要急着就去找正确答案,能有时间自己发现错误,可以借助断点查看程序执行流程,这样对自己的收益是最大的!
至于快排的代码,是这样的:

private static void quicksort(int [] a,int left,int right)     {         int low=left;         int high=right;         //下面两句的顺序一定不能混,否则会产生数组越界!!!very important!!!         if(low>high)//作为判断是否截止条件             return;         int k=a[low];//额外空间k,取最左侧的一个作为衡量,最后要求左侧都比它小,右侧都比它大。         while(low<high)//这一轮要求把左侧小于a[low],右侧大于a[low]。         {             while(low<high&&a[high]>=k)//右侧找到第一个小于k的停止             {                 high--;             }             //这样就找到第一个比它小的了             a[low]=a[high];//放到low位置             while(low<high&&a[low]<=k)//在low往右找到第一个大于k的,放到右侧a[high]位置             {                 low ;             }             a[high]=a[low];                  }         a[low]=k;//赋值然后左右递归分治求之         quicksort(a, left, low-1);         quicksort(a, low 1, right);          }

测试与总结

对于完整的代码,为

package 八大排序; import java.util.Arrays; public class 交换类排序 {     public static void main(String[] args) {         int a[]= {2,8,9,3,7,6,12,4};         maopaosort(a);         System.out.println(Arrays.toString(a));         int b[]= {2,8,9,3,7,6,12,4};         quicksort(b, 0, b.length-1);         System.out.println(Arrays.toString(b));     }     private static void  maopaosort(int[] a) {         // TODO Auto-generated method stub         for(int i=a.length-1;i>=0;i--)         {             for(int j=0;j<i;j )             {                 if(a[j]>a[j 1])                 {                     int team=a[j];                     a[j]=a[j 1];                     a[j 1]=team;                 }             }         }     }     private static void quicksort(int [] a,int left,int right)     {         int low=left;         int high=right;         //下面两句的顺序一定不能混,否则会产生数组越界!!!very important!!!         if(low>high)             return;         int k=a[low];//取最左侧的一个作为衡量,最后要求左侧都比它小,右侧都比它大。         while(low<high)         {             while(low<high&&a[high]>=k)             {                 high--;             }             //这样就找到第一个比它小的了             a[low]=a[high];             while(low<high&&a[low]<=k)             {                 low ;             }             a[high]=a[low];                  }         a[low]=k;         quicksort(a, left, low-1);         quicksort(a, low 1, right);          } }

运行结果:

冒泡排序法流程图讲解,冒泡排序法详细讲解(12)

上一页1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.