首页 > 代码库 > Java冒泡法和二分法
Java冒泡法和二分法
最近去一家公司面试,手贱在人家CTO面前自告奋勇写了一把冒泡法,结果在交换数据的时候出了洋相,回家反思,写下如下代码,对自己算是一个鞭策,得到的教训是不要眼高手低,低调前行。
1 package com.defymedia.interview.sort; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Random; 6 7 public class SimpleSort { 8 9 public static final int NO_MATCH = -1;10 11 public <T extends Comparable> List<T> sort(List<T> list) {12 int size = list != null ? list.size() : 0;13 if (size == 0) return null;14 15 for (int i = 0; i < size; i++) {16 for (int j = i + 1; j < size; j++) {17 if (list.get(i).compareTo(list.get(j)) > 0) {18 T temp = list.get(i);19 list.set(i, list.get(j));20 list.set(j, temp);21 }22 }23 }24 25 return list;26 }27 28 public <T extends Comparable> T[] sort(T[] ts) {29 int size = ts != null ? ts.length : 0;30 if (size == 0) return null;31 32 for (int i = 0; i < size; i++) {33 for (int j = i + 1; j < size; j++) {34 if (ts[i].compareTo(ts[j]) > 0) {35 T temp = ts[i];36 ts[i] = ts[j];37 ts[j] = temp;38 }39 }40 }41 42 return ts;43 }44 45 public <T extends Comparable> int binarySearch(T[] ts, T t) {46 int length = ts != null ? ts.length : NO_MATCH;47 if (length <= 0 || t == null) return NO_MATCH;48 49 int middle;50 int index = NO_MATCH;51 int low = 0;52 int high = length;53 while (low < high) {54 middle = (low + high) >> 1;55 T temp = ts[middle];56 if (temp.compareTo(t) > 0) {57 high = middle;58 } else if (temp.compareTo(t) < 0) {59 low = middle;60 } else {61 index = middle;62 break;63 }64 }65 66 System.out.println("index is " + index);67 return index;68 }69 70 public static void main(String[] param) {71 SimpleSort simpleSort = new SimpleSort();72 int size = 10;73 Random random = new Random();74 List<Integer> list = new ArrayList<>(size);75 for (int i = 0; i < size; i++) {76 list.add(random.nextInt(20));77 }78 list = simpleSort.sort(list);79 for (Comparable comparable : list) {80 System.out.println(comparable.toString());81 }82 Integer[] data = http://www.mamicode.com/new Integer[size];83 for (int i = 0; i < size; i++) {84 data[i] = random.nextInt(50);85 }86 data =http://www.mamicode.com/ simpleSort.sort(data);87 for (Comparable comparable : data) {88 System.out.println(comparable.toString());89 }90 int number = NO_MATCH;91 simpleSort.binarySearch(data, number);92 }93 }
Java冒泡法和二分法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。