static double abs(double a) 返回 double 值的絕對(duì)值。
static float abs(float a) 返回 float 值的絕對(duì)值。 static int abs(int a) 返回 int 值的絕對(duì)值。
static long abs(long a) 返回 long 值的絕對(duì)值。 static double acos(double a) 返回角的反余弦,范圍在 0.0 到 pi 之間。
static double asin(double a) 返回角的反正弦,范圍在 -pi/2 到 pi/2 之間。 static double atan(double a) 返回角的反正切,范圍在 -pi/2 到 pi/2 之間。
static double atan2(double y, double x) 將矩形坐標(biāo) (x, y) 轉(zhuǎn)換成極坐標(biāo) (r, theta)。 static double cbrt(double a) 返回 double 值的立方根。
static double ceil(double a) 返回最小的(最接近負(fù)無(wú)窮大)double 值,該值大于或等于參數(shù),并且等于某個(gè)整數(shù)。 static double cos(double a) 返回角的三角余弦。
static double cosh(double x) 返回 double 值的雙曲線余弦。 static double exp(double a) 返回歐拉數(shù) e 的 double 次冪的值。
static double expm1(double x) 返回 ex -1。 static double floor(double a) 返回最大的(最接近正無(wú)窮大)double 值,該值小于或等于參數(shù),并且等于某個(gè)整數(shù)。
static double hypot(double x, double y) 返回 sqrt(x2 +y2),沒(méi)有中間溢出或下溢。 static double IEEEremainder(double f1, double f2) 按照 IEEE 754 標(biāo)準(zhǔn)的規(guī)定,對(duì)兩個(gè)參數(shù)進(jìn)行余數(shù)運(yùn)算。
static double log(double a) 返回(底數(shù)是 e)double 值的自然對(duì)數(shù)。 static double log10(double a) 返回 double 值的底數(shù)為 10 的對(duì)數(shù)。
static double log1p(double x) 返回參數(shù)與 1 的和的自然對(duì)數(shù)。 static double max(double a, double b) 返回兩個(gè) double 值中較大的一個(gè)。
static float max(float a, float b) 返回兩個(gè) float 值中較大的一個(gè)。 static int max(int a, int b) 返回兩個(gè) int 值中較大的一個(gè)。
static long max(long a, long b) 返回兩個(gè) long 值中較大的一個(gè)。 static double min(double a, double b) 返回兩個(gè) double 值中較小的一個(gè)。
static float min(float a, float b) 返回兩個(gè) float 值中較小的一個(gè)。 static int min(int a, int b) 返回兩個(gè) int 值中較小的一個(gè)。
static long min(long a, long b) 返回兩個(gè) long 值中較小的一個(gè)。 static double pow(double a, double b) 返回第一個(gè)參數(shù)的第二個(gè)參數(shù)次冪的值。
static double random() 返回帶正號(hào)的 double 值,大于或等于 0.0,小于 1.0。 static double rint(double a) 返回其值最接近參數(shù)并且是整數(shù)的 double 值。
static long round(double a) 返回最接近參數(shù)的 long。 static int round(float a) 返回最接近參數(shù)的 int。
static double signum(double d) 返回參數(shù)的符號(hào)函數(shù);如果參數(shù)是零,則返回零;如果參數(shù)大于零,則返回 1.0;如果參數(shù)小于零,則返回 -1.0。 static float signum(float f) 返回參數(shù)的符號(hào)函數(shù);如果參數(shù)是零,則返回零;如果參數(shù)大于零,則返回 1.0;如果參數(shù)小于零,則返回 -1.0。
static double sin(double a) 返回角的三角正弦。 static double sinh(double x) 返回 double 值的雙曲線正弦。
static double sqrt(double a) 返回正確舍入的 double 值的正平方根。 static double tan(double a) 返回角的三角正切。
static double tanh(double x) 返回 double 值的雙曲線余弦。 static double toDegrees(double angrad) 將用弧度測(cè)量的角轉(zhuǎn)換為近似相等的用度數(shù)測(cè)量的角。
static double toRadians(double angdeg) 將用度數(shù)測(cè)量的角轉(zhuǎn)換為近似相等的用弧度測(cè)量的角。 static double ulp(double d) 返回參數(shù)的 ulp 大小。
static float ulp(float f) 返回參數(shù)的 ulp 大小。 從api上截的,更詳細(xì)的還是推薦查看api。
Java的技術(shù)體系是非常龐大的,需要我們學(xué)習(xí)的技術(shù)非常多,往往很多初學(xué)的人,通過(guò)互聯(lián)網(wǎng)查閱了一個(gè)龐大的學(xué)習(xí)列表,然后不知道如何下手。網(wǎng)上很多大牛列的技術(shù)不是不重要,但是掌握住企業(yè)應(yīng)用的Java的核心技術(shù),快速上手,是一種高效的學(xué)習(xí)手段。結(jié)合本人十余年的項(xiàng)目研發(fā)和帶人經(jīng)驗(yàn),整理出如下方面。
首先JavaSE是核心,這是初學(xué)Java人員應(yīng)最先接觸學(xué)習(xí)的部分。Java的運(yùn)行原理,jdk的配置,與jre的區(qū)別,基本數(shù)據(jù)類(lèi)型,流程控制(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)),數(shù)組、集合框架,異常處理等,這些都是比較容易學(xué)習(xí)的,需要多練習(xí),在練習(xí)過(guò)程中加強(qiáng)理解。面向?qū)ο蟛糠质荍ava初學(xué)者,尤其是沒(méi)有任何編程語(yǔ)言基礎(chǔ)的學(xué)起來(lái)有些難度,類(lèi)、對(duì)象、繼承、封裝、多態(tài)等技術(shù)點(diǎn)需要多參照些現(xiàn)有的設(shè)計(jì)模型,學(xué)習(xí)設(shè)計(jì)的思路。諸如工廠模式、觀察者模式、代理模式等重要的設(shè)計(jì)模式也是需要學(xué)習(xí)的,否則在將來(lái)應(yīng)用框架時(shí)就會(huì)只知其然,不知其所以然。IO流、多線程也一定需要學(xué)習(xí),尤其是XML、JSON等文件格式一定要掌握,這在數(shù)據(jù)交互時(shí)常用。
其次是數(shù)據(jù)庫(kù)知識(shí),作為初級(jí)Java程序員必須要掌握一種常用的關(guān)系型書(shū)庫(kù)的應(yīng)用,如MySQL或oracle等,數(shù)據(jù)庫(kù)對(duì)象諸如表、視圖等的創(chuàng)建、增刪改查語(yǔ)句,尤其是查詢(xún),在企業(yè)中經(jīng)常需要從十幾張表、或幾十張表中查詢(xún)數(shù)據(jù),所以對(duì)于如何進(jìn)行內(nèi)連接、外連接、以及聯(lián)合查詢(xún)等一定要掌握,另外對(duì)于索引、事務(wù)等也要掌握。
第三是Java Web部分,由于Java主要做web開(kāi)發(fā),一些前端技術(shù)HTML3、CSS5,javaScript,jQuery等這些不見(jiàn)得要學(xué)得有多深入,但是必須要掌握,tomcat、jsp,以及和數(shù)據(jù)庫(kù)的交互這些都是必須要掌握的。
第四是框架部分,主流的ORM框架有Mybatis、hibernate,MVC框架有Spring MVC、Struts2等,可以?xún)?yōu)先掌握主流的SSM框架組合,框架的學(xué)習(xí)有人認(rèn)為很簡(jiǎn)單,就按照規(guī)定、規(guī)范調(diào)用、使用唄,初學(xué)者可以先學(xué)習(xí)如何使用這些框架,然后慢慢的探究?jī)?nèi)部原理,因?yàn)榭蚣苁羌夹g(shù)封裝、簡(jiǎn)化的產(chǎn)物。
這里面有些同類(lèi)型的技術(shù)比如hibernate,如果會(huì)使用Mybatis了,那么上手就會(huì)很容易,同理如果Spring MVC框架應(yīng)用熟練了,那么Struts2框架其實(shí)就可以現(xiàn)學(xué)現(xiàn)賣(mài)了。
一個(gè)web程序包含的模塊很多,不一定包括所有模塊。
系統(tǒng)模塊:Windows、Linux系統(tǒng)等。
存儲(chǔ)模塊:這里既包括關(guān)系型數(shù)據(jù)庫(kù)MySQL、oracle等,也包括內(nèi)存數(shù)據(jù)庫(kù)redis、memcached等。
程序模塊:還可以細(xì)化成持久化模塊、業(yè)務(wù)邏輯模塊、表現(xiàn)層模塊,MVC框架的實(shí)現(xiàn)。
搜索模塊:應(yīng)用solr或Elasticsearch等。
服務(wù)器模塊:tomcat、weblogic、Resion等
中間件模塊:nginx、MQ消息隊(duì)列技術(shù)等。
在這里額外說(shuō)一下技術(shù)和技能的區(qū)別,初學(xué)者學(xué)一個(gè)技術(shù)可能很容易,但是這個(gè)技術(shù)如何在企業(yè)開(kāi)發(fā)環(huán)境中應(yīng)用這就是技能了,所以在學(xué)習(xí)的同時(shí),要多應(yīng)用,最好通過(guò)一些案例項(xiàng)目來(lái)學(xué)習(xí),這樣既高效,學(xué)習(xí)的還扎實(shí)。
補(bǔ)充一點(diǎn),現(xiàn)在的應(yīng)用級(jí)別越來(lái)越大,海量數(shù)據(jù)、高并發(fā)是處理的重點(diǎn),單應(yīng)用的程序已經(jīng)無(wú)法滿(mǎn)足要求,分布式是趨勢(shì),Dubbo、Zookeeper、Docker、SpringBoot、SpringCloud、MyCat等技術(shù),包括上面系統(tǒng)模塊里提到的一些技術(shù)都要學(xué)習(xí)的。
給你一個(gè)中文的吧。
你不想看英文的API;File類(lèi)是直接繼承Object類(lèi)的。Object類(lèi)的方法我就不不寫(xiě)了:字段摘要 static String pathSeparator 與系統(tǒng)有關(guān)的路徑分隔符,為了方便,它被表示為一個(gè)字符串。
static char pathSeparatorChar 與系統(tǒng)有關(guān)的路徑分隔符。 static String separator 與系統(tǒng)有關(guān)的默認(rèn)名稱(chēng)分隔符,為了方便,它被表示為一個(gè)字符串。
static char separatorChar 與系統(tǒng)有關(guān)的默認(rèn)名稱(chēng)分隔符。 構(gòu)造方法摘要 File(File parent, String child) 根據(jù) parent 抽象路徑名和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。
File(String pathname) 通過(guò)將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建一個(gè)新 File 實(shí)例。 File(String parent, String child) 根據(jù) parent 路徑名字符串和 child 路徑名字符串創(chuàng)建一個(gè)新 File 實(shí)例。
File(URI uri) 通過(guò)將給定的 file: URI 轉(zhuǎn)換為一個(gè)抽象路徑名來(lái)創(chuàng)建一個(gè)新的 File 實(shí)例。 方法摘要 boolean canExecute() 測(cè)試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件。
boolean canRead() 測(cè)試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。 boolean canWrite() 測(cè)試應(yīng)用程序是否可以修改此抽象路徑名表示的文件。
int compareTo(File pathname) 按字母順序比較兩個(gè)抽象路徑名。 boolean createNewFile() 當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱(chēng)的文件時(shí),不可分地創(chuàng)建一個(gè)新的空文件。
static File createTempFile(String prefix, String suffix) 在默認(rèn)臨時(shí)文件目錄中創(chuàng)建一個(gè)空文件,使用給定前綴和后綴生成其名稱(chēng)。 static File createTempFile(String prefix, String suffix, File directory) 在指定目錄中創(chuàng)建一個(gè)新的空文件,使用給定的前綴和后綴字符串生成其名稱(chēng)。
boolean delete() 刪除此抽象路徑名表示的文件或目錄。 void deleteOnExit() 在虛擬機(jī)終止時(shí),請(qǐng)求刪除此抽象路徑名表示的文件或目錄。
boolean equals(Object obj) 測(cè)試此抽象路徑名與給定對(duì)象是否相等。 boolean exists() 測(cè)試此抽象路徑名表示的文件或目錄是否存在。
File getAbsoluteFile() 返回此抽象路徑名的絕對(duì)路徑名形式。 String getAbsolutePath() 返回此抽象路徑名的絕對(duì)路徑名字符串。
File getCanonicalFile() 返回此抽象路徑名的規(guī)范形式。 String getCanonicalPath() 返回此抽象路徑名的規(guī)范路徑名字符串。
long getFreeSpace() 返回此抽象路徑名指定的分區(qū)中未分配的字節(jié)數(shù)。 String getName() 返回由此抽象路徑名表示的文件或目錄的名稱(chēng)。
String getParent() 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒(méi)有指定父目錄,則返回 null。 File getParentFile() 返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒(méi)有指定父目錄,則返回 null。
String getPath() 將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串。 long getTotalSpace() 返回此抽象路徑名指定的分區(qū)大小。
long getUsableSpace() 返回此抽象路徑名指定的分區(qū)上可用于此虛擬機(jī)的字節(jié)數(shù)。 int hashCode() 計(jì)算此抽象路徑名的哈希碼。
boolean isAbsolute() 測(cè)試此抽象路徑名是否為絕對(duì)路徑名。 boolean isDirectory() 測(cè)試此抽象路徑名表示的文件是否是一個(gè)目錄。
boolean isFile() 測(cè)試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件。 boolean isHidden() 測(cè)試此抽象路徑名指定的文件是否是一個(gè)隱藏文件。
long lastModified() 返回此抽象路徑名表示的文件最后一次被修改的時(shí)間。 long length() 返回由此抽象路徑名表示的文件的長(zhǎng)度。
String[] list() 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 String[] list(FilenameFilter filter) 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿(mǎn)足指定過(guò)濾器的文件和目錄。
File[] listFiles() 返回一個(gè)抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 File[] listFiles(FileFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿(mǎn)足指定過(guò)濾器的文件和目錄。
File[] listFiles(FilenameFilter filter) 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿(mǎn)足指定過(guò)濾器的文件和目錄。 static File[] listRoots() 列出可用的文件系統(tǒng)根。
boolean mkdir() 創(chuàng)建此抽象路徑名指定的目錄。 boolean mkdirs() 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
boolean renameTo(File dest) 重新命名此抽象路徑名表示的文件。 boolean setExecutable(boolean executable) 設(shè)置此抽象路徑名所有者執(zhí)行權(quán)限的一個(gè)便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 設(shè)置此抽象路徑名的所有者或所有用戶(hù)的執(zhí)行權(quán)限。 boolean setLastModified(long time) 設(shè)置此抽象路徑名指定的文件或目錄的最后一次修改時(shí)間。
boolean setReadable(boolean readable) 設(shè)置此抽象路徑名所有者讀權(quán)限的一個(gè)便捷方法。 boolean setReadable(boolean readable, boolean ownerOnly) 設(shè)置此抽象路徑名的所有者或所有用戶(hù)的讀權(quán)限。
boolean setReadOnly() 標(biāo)記此抽象路徑名。
方法摘要 char charAt(int index) 返回指定索引處的 char 值。
int codePointAt(int index) 返回指定索引處的字符(Unicode 代碼點(diǎn))。 int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代碼點(diǎn))。
int codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本范圍中的 Unicode 代碼點(diǎn)數(shù)。 int compareTo(String anotherString) 按字典順序比較兩個(gè)字符串。
int compareToIgnoreCase(String str) 不考慮大小寫(xiě),按字典順序比較兩個(gè)字符串。 String concat(String str) 將指定字符串聯(lián)到此字符串的結(jié)尾。
boolean contains(CharSequence s) 當(dāng)且僅當(dāng)此字符串包含 char 值的指定序列時(shí),才返回 true。 boolean contentEquals(CharSequence cs) 當(dāng)且僅當(dāng)此 String 表示與指定序列相同的 char 值時(shí),才返回 true。
boolean contentEquals(StringBuffer sb) 當(dāng)且僅當(dāng)此 String 表示與指定的 StringBuffer 相同的字符序列時(shí),才返回 true。 static String copyValueOf(char[] data) 返回指定數(shù)組中表示該字符序列的字符串。
static String copyValueOf(char[] data, int offset, int count) 返回指定數(shù)組中表示該字符序列的字符串。 boolean endsWith(String suffix) 測(cè)試此字符串是否以指定的后綴結(jié)束。
boolean equals(Object anObject) 比較此字符串與指定的對(duì)象。 boolean equalsIgnoreCase(String anotherString) 將此 String 與另一個(gè) String 進(jìn)行比較,不考慮大小寫(xiě)。
static String format(Locale l, String format, Object。 args) 使用指定的語(yǔ)言環(huán)境、格式字符串和參數(shù)返回一個(gè)格式化字符串。
static String format(String format, Object。 args) 使用指定的格式字符串和參數(shù)返回一個(gè)格式化字符串。
byte[] getBytes() 使用平臺(tái)默認(rèn)的字符集將此 String 解碼為字節(jié)序列,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組中。 void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) 已過(guò)時(shí)。
該方法無(wú)法將字符正確轉(zhuǎn)換為字節(jié)。從 JDK 1.1 起,完成該轉(zhuǎn)換的首選方法是通過(guò) getBytes() 構(gòu)造方法,該方法使用平臺(tái)的默認(rèn)字符集。
byte[] getBytes(String charsetName) 使用指定的字符集將此 String 解碼為字節(jié)序列,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組中。 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。
int hashCode() 返回此字符串的哈希碼。 int indexOf(int ch) 返回指定字符在此字符串中第一次出現(xiàn)處的索引。
int indexOf(int ch, int fromIndex) 從指定的索引開(kāi)始搜索,返回在此字符串中第一次出現(xiàn)指定字符處的索引。 int indexOf(String str) 返回第一次出現(xiàn)的指定子字符串在此字符串中的索引。
int indexOf(String str, int fromIndex) 從指定的索引處開(kāi)始,返回第一次出現(xiàn)的指定子字符串在此字符串中的索引。 String intern() 返回字符串對(duì)象的規(guī)范化表示形式。
int lastIndexOf(int ch) 返回最后一次出現(xiàn)的指定字符在此字符串中的索引。 int lastIndexOf(int ch, int fromIndex) 從指定的索引處開(kāi)始進(jìn)行后向搜索,返回最后一次出現(xiàn)的指定字符在此字符串中的索引。
int lastIndexOf(String str) 返回在此字符串中最右邊出現(xiàn)的指定子字符串的索引。 int lastIndexOf(String str, int fromIndex) 從指定的索引處開(kāi)始向后搜索,返回在此字符串中最后一次出現(xiàn)的指定子字符串的索引。
int length() 返回此字符串的長(zhǎng)度。 boolean matches(String regex) 通知此字符串是否匹配給定的正則表達(dá)式。
int offsetByCodePoints(int index, int codePointOffset) 返回此 String 中從給定的 index 處偏移 codePointOffset 個(gè)代碼點(diǎn)的索引。 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串區(qū)域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串區(qū)域是否相等。 String replace(char oldChar, char newChar) 返回一個(gè)新的字符串,它是通過(guò)用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 而生成的。
String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替換序列替換此字符串匹配字面值目標(biāo)序列的每個(gè)子字符串。 String replaceAll(String regex, String replacement) 使用給定的 replacement 字符串替換此字符串匹配給定的正則表達(dá)式的每個(gè)子字符串。
String replaceFirst(String regex, String replacement) 使用給定的 replacement 字符串替換此字符串匹配給定的正則表達(dá)式的第一個(gè)子字符串。 String[] split(String regex) 根據(jù)給定的正則表達(dá)式的匹配來(lái)拆分此字符串。
String[] split(String regex, int limit) 根據(jù)匹配給定的正則表達(dá)式來(lái)拆分此字符串。 boolean startsWith(String prefix) 測(cè)試此字符串是否以指定的前綴開(kāi)始。
boolean startsWith(String prefix, int toffset) 測(cè)試此字符串是否以指定前綴開(kāi)始,該前綴以指定索引開(kāi)始。 CharSequence subSequence(int beginIndex, int endIndex) 返回一個(gè)新的字符序列,它是此序列的一個(gè)子序列。
String substring(int beginIndex) 返回一個(gè)新的字符串,它是此字符串的一個(gè)子字符串。 。
這個(gè)從關(guān)鍵字來(lái)理解啊,
1. 如果方法定義前面加final,說(shuō)明你已經(jīng)知道這個(gè)方法提供的功能已經(jīng)滿(mǎn)足你要求,不需要進(jìn)行擴(kuò)展,并且也不允許任何從此類(lèi)繼承的類(lèi)來(lái)覆寫(xiě)這個(gè)方法,但是繼承仍然可以繼承這個(gè)方法,也就是說(shuō)可以直接使用。
2. 如果方法定義前面加static,表示靜態(tài)方法,方法和類(lèi)關(guān)聯(lián),直接由類(lèi)名來(lái)調(diào)用。
3. 如果方法定義前面加abstract,表示抽象方法,由繼承類(lèi)來(lái)實(shí)現(xiàn)。
4. 對(duì)于方法前面的public, private,protected等這些是控制方法可以被調(diào)用的范圍。
5. 如果方法定義前面有native,Native方法是由另外一種語(yǔ)言(如c/c++,FORTRAN,匯編)實(shí)現(xiàn)的本地方法。因?yàn)樵谕獠繉?shí)現(xiàn)了方法,所以在java代碼中,就不需要聲明了,有點(diǎn)類(lèi)似于借口方法,一般用不著。
6.如果方法定義前面加synchronized,表示當(dāng)前方法體是一個(gè)臨界區(qū),通過(guò)鎖機(jī)制來(lái)控制多個(gè)線程同步,在多線程應(yīng)用里面經(jīng)常使用。
友情提示:
1. 字符串 str 中字符的索引從0開(kāi)始,范圍為 0 到 str.length()-1
2. 使用 indexOf 進(jìn)行字符或字符串查找時(shí),如果匹配返回位置索引;如果沒(méi)有匹配結(jié)果,返回 -1
3. 使用 substring(beginIndex , endIndex) 進(jìn)行字符串截取時(shí),包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
1、冒泡排序
冒泡排序是一個(gè)比較簡(jiǎn)單的排序方法。在待排序的數(shù)列基本有序的情況下排序速度較快。若要排序的數(shù)有n個(gè),則需要n-1輪排序,第j輪排序中,從第一個(gè)數(shù)開(kāi)始,相鄰兩數(shù)比較,若不符合所要求的順序,則交換兩者的位置;直到第n+1-j個(gè)數(shù)為止,第一個(gè)數(shù)與第二個(gè)數(shù)比較,第二個(gè)數(shù)與第三個(gè)數(shù)比較,。。,第n-j個(gè)與第n+1-j個(gè)比較,共比較n-1次。此時(shí)第n+1-j個(gè)位置上的數(shù)已經(jīng)按要求排好,所以不參加以后的比較和交換操作。例如:第一輪排序:第一個(gè)數(shù)與第二個(gè)數(shù)進(jìn)行比較,若不符合要求的順序,則交換兩者的位置,否則繼續(xù)進(jìn)行二個(gè)數(shù)與第三個(gè)數(shù)比較。。。直到完成第n-1個(gè)數(shù)與第n個(gè)數(shù)的比較。此時(shí)第n個(gè)位置上的數(shù)已經(jīng)按要求排好,它不參與以后的比較和交換操作;第二輪排序:第一個(gè)數(shù)與第二個(gè)數(shù)進(jìn)行比較,。。直到完成第n-2個(gè)數(shù)與第n-1個(gè)數(shù)的比較;。。第n-1輪排序:第一個(gè)數(shù)與第二個(gè)數(shù)進(jìn)行比較,若符合所要求的順序,則結(jié)束冒泡法排序;若不符合要求的順序,則交換兩者的位置,然后結(jié)束冒泡法排序。
共n-1輪排序處理,第j輪進(jìn)行n-j次比較和至多n-j次交換。
從以上排序過(guò)程可以看出,較大的數(shù)像氣泡一樣向上冒,而較小的數(shù)往下沉,故稱(chēng)冒泡法。
2、選擇排序
選擇法的原理是先將第一個(gè)數(shù)與后面的每一個(gè)數(shù)依次比較,不斷將將小的賦給第一個(gè)數(shù),從而找出最小的,然后第二個(gè)數(shù)與后面的每一個(gè)數(shù)依次比較,從而找出第二小的,然后第三個(gè)數(shù)與后面的
3、插入排序
插入排序的原理是對(duì)數(shù)組中的第i個(gè)元素,認(rèn)為它前面的i-1個(gè)已經(jīng)排序好,然后將它插入到前面的i-1個(gè)元素中。插入排序?qū)ι倭吭氐呐判蜉^為有效.
4、快速排序
快速排序是對(duì)冒泡排序的一種改進(jìn)。它的基本思想是:通過(guò)一次排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按次方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此大道整個(gè)數(shù)據(jù)變成有序序列。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥(niǎo). 頁(yè)面生成時(shí)間:2.821秒