java插入排序
import javax.naming.ldap.SortControl; /** * 原理:分成有序区和无序区,将无序区的元素a[i]从后向前逐一与有序区的元素a[j]进行比较, * 若a[j]>a[i],则将a[j]放到a[j+1]位置,即查找与换位同时进行, 直到找到一个a[j]<a[i]将a[i] * 放置到a[j+1]位置。此过程循环n-1次,查找完成 * * 时间复杂度 平均情况:O(n^2) 最坏情况:O(n^2),该情况出现在原序列为逆序情况 * 最好情况:O(n),出现在已经为升序排列的情况,每次之比较一次即可,共n-1次循环,故为n-1 * * 稳定性:稳定 * */ public class 插入排序 { public int[] inertSort(int[] a, int n) { int x; int i, j; for (i = 1; i < n; i++) { x = a[i]; for (j = i - 1; j >= 0; j--) { if (a[j] > x) a[j + 1] = a[j]; else break; } a[j + 1] = x; } return a; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[] { 25, 56, 32, 20, 1, 5, 89, 3, 8, 41 }; 插入排序 sort = new 插入排序(); sort.inertSort(a, a.length); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }
posted on 2013-10-11 12:41 tianyuanshgan 阅读(249) 评论(0) 编辑 收藏 举报