算法
Fighting_No1
这个作者很懒,什么都没留下…
展开
-
(1)排序算法——选择排序
排序算法有很多,包括选择排序、插入排序、冒泡排序、合并排序、快速排序、堆排序等,这些算法各有优点。首先,我们先看下不同时间复杂度的区别: 选择排序算法是在列表中找到最小(大)数,并将其放在表头(尾),然后在剩下的数中找到最小(大)数,放到第一个数之后(最后一个数之前),这样一直做下去,直到列表中只剩一个数为止。选择排序算法的时间复杂度为O(n*n)(n为数据量)。import java.util.原创 2016-03-19 15:14:40 · 477 阅读 · 0 评论 -
(9)Map按键和按键值排序
Map按键升序排序可以直接new一个TreeMap对象就可以实现了,要按键降序的话,需要重构TreeMap的Comparator比较器。这里给出了两种Map按值排序的方式。 import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMa原创 2016-03-19 16:44:52 · 703 阅读 · 0 评论 -
(8)七种排序算法的对比
下面我们写一个程序来比较选择排序、插入排序、冒泡排序、合并排序、快速排序、堆排序、基数排序这七种排序算法对同样的整型数组的排序所用的时间。public class AllSort { public static void main(String[] args) { System.out.println("Array Size\tSelection Sort\tInsertion Sort"原创 2016-03-19 16:28:09 · 402 阅读 · 0 评论 -
(7)排序算法——桶排序
桶排序时间复杂度为O(n+N),空间复杂度也是O(n+N),适合小整数,n是线性表的大小,N为键值范围。 public static <E> void bucketSort(E[] list){ E[] buckets=(E[])new java.util.ArrayList[N]; for(int i=0;i<list.length;i++){原创 2016-03-19 15:59:08 · 391 阅读 · 0 评论 -
(6)排序算法——堆排序
时间复杂度为O(n*logn)public class HeapSort { /** Heap sort method */ public static <E extends Comparable> void heapSort(E[] list) { // Create a Heap of integers Heap<E> heap = new Heap<E>(); /原创 2016-03-19 15:53:55 · 349 阅读 · 0 评论 -
(5)排序算法——快速排序
快速排序的时间复杂度为O(n*logn),空间复杂度比合并排序的小。public class HeapSort { /** Heap sort method */ public static <E extends Comparable> void heapSort(E[] list) { // Create a Heap of integers Heap<E> heap =原创 2016-03-19 15:50:26 · 307 阅读 · 0 评论 -
(4)排序算法——合并排序
合并排序算法的时间复杂度为O*(n*logn)public class MergeSort { /** The method for sorting the numbers */ public static void mergeSort(int[] list) { if (list.length > 1) { // Merge sort the first half原创 2016-03-19 15:46:45 · 410 阅读 · 0 评论 -
(3)排序算法——冒泡排序
冒泡排序算法需要遍历几次数组。在每次遍历中,比较连续相邻的元素。如果某一对元素是降序,则互换它们的值;否则,保持不变。第一次遍历之后,最后一个元素成为数组中的最大数。第二次遍历之后,倒数第二个元素成为数组中的第二大数。整个过程持续到所有元素都已排好序为至。其时间复杂度为O(n*n).public class BubbleSort { public static void main (Strin原创 2016-03-19 15:39:37 · 454 阅读 · 0 评论 -
(2)排序算法——插入排序
插入排序算法是在已排好序的子数组中反复插入一个新元素,直到整个数组全部排好序。其时间复杂度为O(n*n).import java.util.ArrayList; import java.util.List; public class InsertSort { /**对整型数组进行插入排序**/ public static void sort(int[] list){ i原创 2016-03-19 15:16:38 · 729 阅读 · 0 评论 -
(1)线性查找和二分搜索
线性查找算法遍历数组,直到找到查询内容,其时间复杂度为O(n)。public static int lineatSearch(int[] list,int key) { for(int i=0;i<list.length;i++) { if(key==list[i]) return i;原创 2016-03-19 16:54:22 · 883 阅读 · 0 评论