【Java学习笔记】09.冒泡排序和选择排序

来源:互联网 发布:魔法王座翅膀进阶数据 编辑:程序博客网 时间:2024/04/20 14:54

1.冒泡排序
1)基本概念:相邻的两个元素进行比较,小的放前面,大的放后面
(从小到大排序)存在10个不同大小的气泡,由底至上地把较少的气泡逐步地向上升,这样经过遍历一次后,最小的气泡就会被上升到顶(下标为0),然后再从底至上地这样升,循环直至十个气泡大小有序。
在冒泡排序中,最重要的思想是两两比较,将两者较少的升上去

2)示例:

public class bubbleSort {  public  bubbleSort(){       int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};      int temp=0;      for(int i=0;i<a.length-1;i++){          for(int j=0;j<a.length-1-i;j++){          if(a[j]>a[j+1]){              temp=a[j];              a[j]=a[j+1];              a[j+1]=temp;          }          }      }      for(int i=0;i<a.length;i++)          System.out.println(a[i]);     }  }  

排序思路这里写图片描述

2.选择排序
1)原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)

2)示例算法:

//选择排序public class SelectionSort {    public static void main(String[] args) {        int[] arr={1,3,2,45,65,33,12};        System.out.println("交换之前:");        for(int num:arr){            System.out.print(num+" ");        }                //选择排序的优化        for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序            int k = i;            for(int j = k + 1; j < arr.length; j++){// 选最小的记录                if(arr[j] < arr[k]){                     k = j; //记下目前找到的最小值所在的位置                }            }            //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换            if(i != k){  //交换a[i]和a[k]                int temp = arr[i];                arr[i] = arr[k];                arr[k] = temp;            }            }        System.out.println();        System.out.println("交换后:");        for(int num:arr){            System.out.print(num+" ");        }    }}

举例理解:
这里写图片描述

0 0
原创粉丝点击