基础算法系列(十四)排序算法之图书馆排序
来源:互联网 发布:centos 内核降级 编辑:程序博客网 时间:2024/06/04 17:50
图书馆排序是对插入排序的一种改进,它与插入算法的不同就是,它在往新数组中插入元素时,元素的前后是有保留空间,以便用来插入新元素而不用移动别的元素。
/** * 图书馆排序升序 */public static int sort_tushuguan_asc(int[] array) {int count = 0;if (array.length < 2)return count;int[] newArray = new int[array.length * 3];for (int i = 0; i < newArray.length; i++)newArray[i] = -1;if (array[0] > array[1]) {int temp = array[1];array[1] = array[0];array[0] = temp;}for (int i = 0; i < array.length; i++)newArray[i * 3 + 1] = array[i];for (int i = 6; i < newArray.length; i++) {if (newArray[i] == -1)continue;for (int j = 0; j < i; j++) {if (newArray[j] == -1)continue;if (newArray[i] < newArray[j]) {count++;if (j != 0 && newArray[i - 1] == -1) {newArray[i - 1] = newArray[j];newArray[j] = -1;} else {int temp = newArray[i];for (int k = i; k > j; k--) {count++;newArray[k] = newArray[k - 1];}newArray[j] = temp;}}}}for (int i = 0; i < array.length;)for (int j : newArray)if (j != -1) {array[i] = j;i++;}return count;}
/** * 图书馆排序降序 */public static int sort_tushuguan_dasc(int[] array) {int count = 0;if (array.length < 2)return count;int[] newArray = new int[array.length * 3];for (int i = 0; i < newArray.length; i++)newArray[i] = -1;if (array[0] < array[1]) {int temp = array[1];array[1] = array[0];array[0] = temp;}for (int i = 0; i < array.length; i++)newArray[i * 3 + 1] = array[i];for (int i = 6; i < newArray.length; i++) {if (newArray[i] == -1)continue;for (int j = 0; j < i; j++) {if (newArray[j] == -1)continue;if (newArray[i] > newArray[j]) {count++;if (j != 0 && newArray[i - 1] == -1) {newArray[i - 1] = newArray[j];newArray[j] = -1;} else {int temp = newArray[i];for (int k = i; k > j; k--) {count++;newArray[k] = newArray[k - 1];}newArray[j] = temp;}}}}for (int i = 0; i < array.length;)for (int j : newArray)if (j != -1) {array[i] = j;i++;}return count;}
这里只是简单的实现以下图书馆排序。
0 0
- 基础算法系列(十四)排序算法之图书馆排序
- 基础算法系列(五)排序算法之冒泡排序
- 基础算法系列(六)排序算法之鸡尾酒排序
- 基础算法系列(七)排序算法之插入排序
- 基础算法系列(八)排序算法之桶排序
- 基础算法系列(九)排序算法之计数排序
- 基础算法系列(十)排序算法之合并排序
- 基础算法系列(十三)排序算法之地精排序
- 基础算法系列(十五)排序算法之选择排序
- 基础算法系列(十六)排序算法之希尔排序
- 基础算法系列(十七)排序算法之堆排序
- 基础算法系列(十八)排序算法之快速排序
- 基础算法系列(十九)排序算法之内省排序
- 基础算法系列(十二)排序算法之基数排序
- 基础算法系列(十一)排序算法之鸽巢排序
- 基础算法系列(二十)排序算法之耐心排序
- 排序算法系列之基本排序算法
- 算法基础之排序
- C++简单笔试题8道
- 啦啦啦
- SAP 菜单增强
- Eclipse开发Android程序如何在手机上运行
- java增删创建文件夹
- 基础算法系列(十四)排序算法之图书馆排序
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 做技术一定要转型吗?
- C/CPlusplus基础
- 如何防止window.open打开的弹出窗口被浏览器拦截
- android中文api(85)——HorizontalScrollView
- Lucene基础篇3 Analyzer
- keil与Proteus联调
- vpn server 配置