插入排序:
插入排序主要思想是将序列中的新元素插入到已经排好序的序列中,通过比较新元素和已排好序列中的元素大小,将新元素插入到合适的位置即为插入排序
下面举一个由小到大排序的例子:
如: 1,7,3,9,4,6,9
第一次发生位置交换排序结果: 1,3,7,9,4,6,9(数字3插入后引起变化)
第二次发生位置交换排序结果: 1,3,7,4,9,6,9(数字4插入后引起变化)
第三次发生位置交换排序结果: 1,3,4,7,9,6,9
第四次发生位置交换排序结果: 1,3,4,7,6,9,9(数字6插入后引起变化)
第五次发生位置交换排序结果: 1,3,4,6,7,9,9
结束
可以看出插入排序是稳定的,即当存在相同数字时,不会因为排序过程导致相同数字的前后位置发生变化
下面是Java语言的插入排序实现
class insertSort{
private int[] nums;
public void sort(){
for(int i=0;i<nums.length;i++){
int temp=i;//保持对新插入的数字的跟随所用变量
for(int j=i;j>=0;j--){
if(nums[temp]>nums[j]){
change(temp,j);
temp=j;
}
}
}
}
public void change(int i,int j){
int num=0;
num = nums[i];
nums[i] = nums[j];
nums[j] = num;
}
public int[] insertSort(int[] nums){
this.nums = nums;
sort();
return nums;
}
public void print(){
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+",");
}
}
}
public class insert_sort{
public static void main(String[] args){
int[] numbers = {1,0,8};
insertSort is = new insertSort();
is.insertSort(numbers);
is.print();
}
}