本文内容借鉴与:一线码农 的博客:。
冒泡排序:
首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是:
我抓一把沙仍进水里,那么沙子会立马沉入水底, 沙子上的灰尘会因为惯性暂时沉入水底,但是又会立马像气泡一样浮出水面,最后也就真相大白咯。
关于冒泡的思想,我不会说那么官方的理论,也不会贴那些文字上来,我的思想就是看图说话。
那么我们就上图.
要达到冒泡的效果,我们就要把一组数字竖起来看,大家想想,如何冒泡?如何来体会重的沉底,轻的上浮?
第一步: 我们拿40跟20比,发现40是老大,不用交换。
第二步: 然后向前推一步,就是拿20跟30比,发现30是老大,就要交换了。
第三步:拿交换后的20跟10比,发现自己是老大,不用交换。
第四步:拿10跟50交换,发现50是老大,进行交换。
最后,我们经过一次遍历,把数组中最小的数字送上去了,看看,我们向目标又迈进了一步。
package com.ufida.practice.suanfa.sort; public class MaoPao { /** * @param args * @author wangchy */ public static void main(String[] args) { // TODO Auto-generated method stub int[] arr= new int[]{7,22,11,5,400,99,20,22,5}; new MaoPao().Maopao(arr); for(int i : arr) System.out.println(i); } public void Maopao(int targetArr[]){ for(int i = 0; i<targetArr.length-1;i++){ for(int j = targetArr.length-1; j>i; j--){ if(targetArr[j-1] > targetArr[j]) swap(targetArr,j-1,j); } } } public void swap(int arr[],int a,int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] =temp; } }