数据结构——排序算法
欢迎关注转发点赞留言
数据结构研究排序算法有何意义?排序算法数据库底层用的最多了。实际工作中排序在数据库高频出现,最常用有按时间升降排序等等。不过这些排序只需通过数据库排序命令就可完成,不用自个去整。
数据结构排序分为内部排序(排序在内存完成),外部排序( 数据太多无法全部加载到内存,需要借助外部存储)。内部排序分为插入排序(包括直接插入排序,希尔排序),交换排序(简单选择排序,堆排序),选择排序(冒包括泡排序,交换排序),归并排序,基数排序。
这次先分享插入排序原理介绍。插入排序流程是逻辑上把一个数组分为有序数组,无序数组。有序数组初始化值(原来数组下标为0的值),取出无序数组的第一个值(原来数组的第二个值)与有序数组值比较 。当有序数组的值比无序数组值大,用临时变量把有序数组的值存起来,把无序数组值传入到有序数组下标为0位置中,无序数组位置存放临时变量。
插入排序示意图
public static void sort(int[] arr){
//10 19 2 2 2
int j;
for (int i=1;i<arr.length;i++){
int noOrderVal=arr[i];//待插入有序数组的值
int orderIndex=i-1;//有序数组最后一值
for( j=orderIndex;j>=0&&noOrderVal<arr[j];j--){
arr[j+1]=arr[j];//把数值大的往后移动
}
arr[j+1]=noOrderVal;//待插入有序数组位置
print(arr);
}
}
传入{55,110,12,22,32}
打印结果
55 110 12 22 32
12 55 110 22 32
12 22 55 110 32
12 22 32 55 110
大家说说这种插入排序算法性能怎样?
欢迎关注转发点赞留言