您的位置:首页 > 其它

【排序算法】插入排序

2015-08-28 09:36 267 查看
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
package sort.algorithm.insert;

public class Insert
{
// 处理的方法是:每次获得一个元素,构建另一个有序列表。使用一个数组就足够了,
// 如果有十个位置,一个列表可以保存在数组的头部,而另一个列表可以保存在数组
// 的尾部。

// 插入排序的最坏情况是O(n^2)
public static void insertSort(int[] a)
{
for (int i = 1; i < a.length; i++)
{
int temp = a[i];
int j = i-1;

while (j > -1 && a[j]>temp)
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}

public static void insertSort(int[] data, int first, int n)
{
int i,j;
int temp;

for (i = 0; i < n; i++)
{
temp = data[i+first];
for (j = first + i; j > first; j--)
{
if (temp > data[j-1])
{
break;
}
else {
data[j] = data[j-1];
}
}
data[j] = temp;
}
}

public static void main(String[] args)
{
int data[] = {0, 30, 60, 50, 40, 70, 20, 10, 5, 80};
//		insertSort(data,0,10);
insertSort(data);
for (int i = 0; i < data.length; i++)
{
System.out.print(data[i] + ",");
}

}
}

结果是:

0,5,10,20,30,40,50,60,70,80,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: