天天看點

三種簡單的排序算法

最簡單的三種排序算法,分别是冒泡排序,選擇排序,插入排序

在這裡,主要用圖去幫助記憶三種排序的具體操作

冒泡排序(從左到右,從上到下)

三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法

不變性:右邊是有序的

代碼:

public void bubbleSort(){
    	 int out, in;
    	 for(out = nElems-1; out > 0; out--)
    		 for(in = 0 ; in < out; in++)
    			 if(a[in]>a[in+1])
    				 swap(in,in+1);
    	 
     }
           

選擇排序

三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法

不變性:最左邊是有序的

代碼:

public void selectionSort()
 {
	 int out,in,min;
	 for(out=0;out<=nElems-2;out++){
		 min = out;
		 for(in=out+1;in<=nElems-1;in++)
		 {
			 if(a[min] > a[in])
				 min = in;
		 }
		 swap(out,min);
	 }
 }
           

插入排序

三種簡單的排序算法
三種簡單的排序算法
三種簡單的排序算法

不變性:左邊局部有序

代碼:

public void insertSort()
 {
	 int out,in;
	 for(out=1;out<=nElems-1;out++)
	 {
		 int temp = a[out];
		 for(in = out ;in>=1;in--)
		 {
			 if(a[in-1]>temp)
				 a[in] = a[in-1];
		 }
		 a[in] = temp;
	 }
 }