排序问题

一、冒泡排序:(Bubble Sort),是一种计算机科学领域的较简单的排序算法

  • 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
    这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
     1     //定义冒泡排序方法
     2     public static int[] Bubble_sort(int[] arry_int) {
     3         int lenth=arry_int.length;
     4         //外层循环
     5         for (int i=0;i<lenth;i++) {
     6             //内层循环
     7             for(int j=0;j<lenth-i-1;j++) {
     8                 //判断相邻两个数是大小
     9                 if(arry_int[j]>arry_int[j+1]) {
    10                     //如果前者比后者大 定义临时变量替换两者的值
    11                     int temp = arry_int[j+1];
    12                     arry_int[j+1]=arry_int[j];
    13                     arry_int[j]=temp;
    14                 }
    15             }
    16         }
    17         
    18         
    19         return arry_int;
    20     }
  • 以上是个人写的冒泡排序方法 总结来说,有两个地方需要注意,双层嵌套循环中 内层循环需要注意 用外层循环的便利来做限制 会使得循环册数减少一半,提高效率,还有一个是需要注意,因为内层循环涉及到小标+1 需要注意不要数组越界  否则会导致程序报错。
 1 //定义选择排序
 2     public static int[] Selection_sort(int[] arry_int) {
 3         int lenth=arry_int.length;
 4         int temp=0;
 5         int temp_arry=0;
 6         //定义外层循环
 7         for(int j=0;j<lenth;j++) {
 8             //定义临时变量 存储循环中的最小值
 9             temp=arry_int[j];
10             //定义临时变量 存储最小值下标
11             temp_arry=j;
12             //定义内层循环
13             for(int i=j;i<lenth-1;i++) {
14                 //循环中比对 当前值是否比下一个值小
15                 if(temp>arry_int[i+1]) {
16                     //如果当前值小 则把树枝存储在临时变量 并且记录下标
17                     temp_arry=i+1;
18                     temp=arry_int[i+1];
19                 }
20             }
21             //通过临时变量 替换数组的数据
22             arry_int[temp_arry]=arry_int[j];
23             arry_int[j]=temp;            
24         }        
25         return arry_int; 
26     }
  • 需要注意的是 每次循环拿到最小值   然后把最小值存储在临时变量  通过一次遍历之后,把最小值拿到 ,然后替换到数组  第二次遍历时,要把已经有序的过滤掉,我这边使用的方法是把外层循环的值作为内层循环的初始值,这样的话,就可过滤掉之前有序的数组
posted @ 2020-11-02 11:24  大唐棋牌官  阅读(111)  评论(0编辑  收藏  举报