問題
有一陣列a,長度為n,把陣列中的元素小到大重新排列。
思路
我們把陣列分為已排序和未排序兩部分,把未排序的元素一次乙個插入到已排序部分的合適位置上。已排序部分逐漸增大,直到整個陣列變成有序的。
一趟排序:假設從第n個元素開始是無序的,而其前面n-1個元素是有序的。把a[n]取出來放入temp中。然後用temp與前面的元素比較。(1)如果比前面的元素小,則前面的元素後移一位;
(2)如果比前面的元素大則插入到後面的位置,這一趟排序完成。這時已排序元素增加為n個。如此類推。
核心**:
static
void
sort(
int array)
else
}array[j+1
] =temp;}}
全部**:
package
com.icescut.classic.algorithm;
public
class
insertsort ;
//test data
sort(array);
for(
intel : array)
}static
void
sort(
int array)
else
}array[j+1
] =temp;}}
}
經典演算法之插入排序
一 基本思路 將乙個待排序的記錄,按照關鍵字大小插入到前面已經拍好的子串行的適當位置,直到全部記錄插入完成為止。如果序列基本有序,效率很高。二 include stdafx.h include includeusing namespace std void swap int a,int b void...
經典排序演算法之 插入排序
插入排序的基本思想是將乙個記錄插入到已經排好序的有序表中,從而形成乙個新的有序表。對於少量元素的排序,插入排序是乙個有效的演算法。工作方式像許多人排序一副撲克牌,開始時,我們的左手為空並且桌子上的牌面向下。然後,我們每次從桌子上拿走一張牌並將它插人左手中正確的位置。為了找到一張牌的正確位置,我們從右...
經典排序演算法 插入排序
插入的排序的原理是每趟將乙個數按照大小插入到它前面已經排好序的子串行中。依次重複,直到插入全部數字。以陣列 3,4,1,2 為例,公升序排列陣列。第一趟從第2個資料開始 第1個數字自己已經有序 跟前面乙個數字比較,如果小於前面數字就將前面數字後移,並繼續向前比較,直到下標小於0為止。如下圖所示 第二...