【代码积累】InsertionSort via list
来源:互联网 发布:漫步者da500调音软件 编辑:程序博客网 时间:2024/06/08 05:53
import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.ListIterator;public class Test {public void test() {//int[] test = {5,4,3,2,1};int[] test={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};//int[] test={56,17,18,23,34};insertionSortByList(test);}public void showList(List a) {Iterator ite = a.iterator();while( ite.hasNext() ) {System.out.format("%d ", (int)ite.next());}System.out.format("\r");}public void insertionSortByList(int[] a ) {List list = new LinkedList<>();List newList = new LinkedList<>();//将数组转存到Listfor( int cnt=0;cnt<a.length;cnt++ ) {list.add(a[cnt]);}/*分别从List的左右两边进行处理: * 左边遍历比较,并插入;右边遍历选择,并删除 * * 利用链表的删除、插入在效率上的优势,优化基于数组进行移位操作的时间复杂度,但是链表会提升空间复杂度,并且链表的遍历效率比数组低*/if( list.size() <= 1 ) {//没必要排序return;}newList.add(list.remove(0));int key = 0;int innerKey = 0;Iterator ite = list.iterator();while( ite.hasNext() ) {key = (int)ite.next(); /*外层循环,每次取原数组(待排序)的第一个数据*//*从后往前比较*/int index = 0;ListIterator innerIte = newList.listIterator(newList.size());while( innerIte.hasPrevious() ) {innerKey = (int)innerIte.previous();if( key >= innerKey ) { index = innerIte.nextIndex()+1; /*基于array的算法,这里不用做操作,循环自动结束,直接赋值即可。当key<innerKey时需要将数组移位。*/break;}}/*内层循环结束,将innerKey插入newList中迭代器当前的位置*/newList.add(index, key);ite.remove();//showList(newList);}showList(newList);}//public void testtt() {//Arrays.sort(a);//}}/* * 综述 * * */
阅读全文
0 0
- 【代码积累】InsertionSort via list
- 【代码积累】InsertionSort
- leetcode InsertionSort list
- InsertionSort
- InsertionSort
- insertionsort
- InsertionSort
- Insertionsort
- insertionSort
- InsertionSort
- Group list data via linq
- Create/Delete list via powershell
- 代码积累
- java积累---List
- insertionSort debug
- 积累代码VS积累经验
- List all drivers via DOS command
- Add/Delete ContentType in list via powershell
- VS调试F11进不到dll源码
- SharedPreferences以及获取当前目录
- vscode使用总结
- Linux
- Python使用struct处理二进制
- 【代码积累】InsertionSort via list
- python库——h5py入门讲解
- 基于CentOS6.4环境编译Spark-2.1.0源码
- 【代码积累】IntegerObjectCompare
- POJ 1321(A)棋盘问题
- Oracle简单入门
- 学习Linux命令(28)
- 线程run和start方法区别
- 剑指offer——树的子结构(还不错)