java api之演算法

來源:互聯網
上載者:User

演算法

本節中所描述的多態演算法 (polymorphic algorithms)是由 JDK 所提供的可重複使用的功能性片段。它們均取自Collections類,並都採用靜態方法(它的第一個參數是執行操作的 對象集)的形式。由Java平台所提供的絕大多數演算法都操作於List對象,但有兩個 (min 和 max) 操作於任意Collection對象。以下是關於演算法的描述

排序(Sorting)

排序演算法可為一個 List 重新排序,以使它的元素按照某種排序關係成上升式排序。有兩種形式的操作被提供。簡單形式的操作只採用一個 List 並按照它的元素的自然排序進行排序。如果你對自然排序的概念不熟悉,那麼應該重新閱讀 對象排序(Object Ordering).

sort 操作使用做了些最佳化的合并排序(merge sort) 演算法。如果你不知道它的含義,而又很看重它的話, 請閱讀關於演算法的任意一種教科書。這個演算法的重要之處是:

快速: 這個演算法被保證運行在 n log(n) 時間內,並在已基本排序的列表上,它的速度實質上更快。經驗表明,它的速度與高度最佳化的快速排序(quicksort)的速度差不多, Quicksort 一般被認為快於合并排序,但它不穩定,並不保證 n log(n)效能。

穩定: 這就是說,它不為相等的元素重新排序。如果你為相同的列表做不同屬性的重複排序,這一點對你來說是十分重要的。如果一個郵件程式的使用者為它的郵件箱按日期排序,然後又按寄件者排序,這個使用者自然地期望某個特定寄件者的現在相鄰的訊息列表將(仍然)按日期排序。這一點只有在第二個排序是穩定的時候才能得以保證。

以下是 一個小程式,它可按詞典(字母)順序列印它的參數:

import java.util.*;
public class Sort {
public static void main(String args[]) {
List l = Arrays.asList(args);
Collections.sort(l);
System.out.println(l);
}
}

讓我們運行這個程式:

% java Sort i walk the line
[i, line, the, walk]

示範這個程式只是為了表示我是毫無保留的:這個演算法確實是象它們所顯現的那樣簡單。我不想低估你的能力而示範更傻的例子。

第二種形式的 sort除採用一個 List 外,還採用一個 Comparator 並且使用 Comparator 對元素進行排序。還記得在 Map 課程結 鋇呐帕凶櫚睦勇? 它以一個非特定的順序列印出排列組。假設你要以相反的大小順序列印它們,大的排列在前面。下列例子將告訴你如何藉助 sort 方法的第二種形式而達到你的目的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.