第一篇:Java排序總結(jié)
倒敘排序
第一種利用一個(gè)數(shù)組來盛放后,再來倒敘輸出 public class daoxu {
} 第二種利用一個(gè)變量來轉(zhuǎn)換后,倒序輸出 public class daoxu {
public static void main(String[] args{ int[] arr[] ={2,4,6,87,13,15};for(int i = 0;i < arr.length/2;i++){ int temp = arr[i];public static void main(String[] args){
int[] arr ={2,4,6,8,7,1,3};int[] num =new int[arr.length];for(int i = 0;i < arr.length;i++){
}
} } for(int i = 0;i < num.length;i++){ System.out.print(“ ”+num[i]+“ ”);num[i] = arr[arr.length1];num[arr.length1] = arr[i];
arr[i] =arr[arr.length-i-1 ];
arr[arr.length-i-1] =temp;
} for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] +“ ”);} } }
冒泡排序(1.是將其升序排布)
public class maopao { public static void main(String[] args){
int[] arr = {2,5,8,9,1,0,25};
for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr.length-i-1;j++){
//2.arr[j+1] > arr[j],則其會降序輸出
if(arr[j+1] int temp = arr[j]; 如果將其 } } } } arr[j] = arr[j+1];arr[j+1] = temp;} for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);升序排列 import java.util.Arrays; public class shengxu { public static void main(String[] args){ int[] arr = {1,5,0,2,10,4,78,9};Arrays.sort(arr);for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);} } 降序排列 第一種先升序再降序 import java.util.Arrays;public class jiangxu { } 第二種利用冒泡排序,然后再將其反向輸出 public class maopao { public static void main(String[] args){ } int[] arr ={2,4,6,8,0,1,3,15,89,5};Arrays.sort(arr);for(int i = 0;i < arr.length/2;i++){ } for(int i = 0;i < arr.length;i++){ } System.out.print(arr[i]+“ ”);int temp = arr[i];arr[i]=arr[arr.length-i-1];arr[arr.length-i-1]= temp; } public static void main(String[] args){ } } for(int i = arr.length-1;i >=0;i--){ } System.out.print(arr[i]+“ ”);int[] arr = {2,5,8,9,1,0,25};for(int i = 0;i < arr.length;i++){ for(int j = 0;j < arr.length-i-1;j++){ } if(arr[j+1] } int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;第三種利用冒泡排序的倒敘輸出 public class maopao { public static void main(String[] args){ int[] arr = {2,5,8,9,1,0,25};for(int i = 0;i < arr.length;i++){ } } for(int j = 0;j < arr.length-i-1;j++){ } if(arr[j+1]>arr[j]){ } int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;} for(int i = 0;i JAVA四種基本排序,包括冒泡法,插入法,選擇法,SHELL排序法.其中選擇法是冒泡法的改進(jìn),SHELL排序法是 插入法的改進(jìn).所以從根本上來說可以歸納為兩種不同的排序方法:即:插入法&冒泡法 一 插入法:遍歷排序集合,每到一個(gè)元素時(shí),都要將這個(gè)元素與所有它之前的元素遍歷比較一遍,讓符合排序順序的元素挨個(gè)移動(dòng)到當(dāng)前范圍內(nèi)它最應(yīng)該出現(xiàn)的位置。交換是相鄰遍歷移動(dòng),雙重循環(huán)控制實(shí)現(xiàn).這種排序法屬于地頭蛇類型,在我的地牌上我要把所有的東西按一定的順序規(guī)整,過來一個(gè),規(guī)整一個(gè).處理代碼如下: public void sort(int[] data){ int temp; for(int i=1;i〈data.length;i++){ for(int j=i;(j〉0)&&(data[j]〉data[j-1]);j--){ temp=date[j];data[j]=data[j-1];data[j-1]=temp;} } } 二冒泡法:比較容易,它的內(nèi)層循環(huán)保證遍歷一次后,集合中最?。ù螅┰爻霈F(xiàn)在它的正確位置,下一次就是次小元素。。該方法在集合分布的各種情況下交換移動(dòng)的次數(shù)基本不變,屬于最慢的一種排序。實(shí)現(xiàn)也是雙重循環(huán)控制。這種排序法屬于過江龍,就是要找到極端,但是過獎(jiǎng)龍也有大哥,二哥等,所以他們只能是大哥挑了二哥挑.處理代碼如下: public static int [] maopao(int[] data){ int temp; for(int i=0;i〈data.length-1;i++){ for(int j=i+1;j〈data.length;j++〉{ if(data[i]〈data[j]〉{ temp=data[i];data[i]=data[j];data[j]=temp;} 〉 〉 return data; 三選擇法:該方法只是通過遍歷集合記錄最?。ù螅┰氐奈恢?,一次遍歷完后,再進(jìn)行交換位置操作,類似冒泡,但在比較過程中,不進(jìn)行交換操作,只記錄元素位置。一次遍歷只進(jìn)行一次交換操作。這個(gè)對與交換次序比較費(fèi)時(shí)的元素比較適合。這種排序法比冒泡法要城府要深的多,我先記住極端數(shù)據(jù),待遍歷數(shù)據(jù)完了之后,我再處理,不像冒泡法那樣只要比自己極端一點(diǎn)的就要處理,選擇法只處理本身范圍內(nèi)的最極端數(shù)據(jù).public static void xuanze(int[] data){ int temp; for(int i = 0;i 〈 data.length;i++〉 { int lowIndex = i; for(int j = data.length-1;j)i;j--){ if(data[j])data[lowIndex]){ lowIndex = j;} } temp=data[i]; data[i]=data[lowIndex];data[lowIndex]=temp;} } 四 Shell排序: 它是對插入排序的一種改進(jìn),是考慮將集合元素按照一定的基數(shù)劃分成組去排序,讓每一組在局部范圍內(nèi)先排成基本有序,最后在進(jìn)行一次所有元素的插入排序。public void sort(int[] data){ for(int i=data.length/2;i)2;i/=2){ for(int j=0;j〈i;j++〉{ insertSort(data,j,i);} 〉 insertSort(data,0,1);〉 private void insertSort(int[] data, int start, int inc){ int temp; for(int i=start+inc;i〈data.length;i+=inc〉{ for(int j=i;(j)=inc)&&(data[j]〈data[j-inc]〉;j-=inc〉{ temp=data[j];data[j]=data[j-inc] data[j-inc]=temp;} 〉 〉 /*選擇排序*/ public class SelectSort2 { public static void sort(int[] tempArr){ for(int i =0;i { /* 當(dāng)初錯(cuò)誤認(rèn)為此處與冒泡排序極為相像,甚至覺得選擇排序與冒泡排序毫無差別,其實(shí)相反,冒泡循環(huán)意味著每一次 循環(huán)都會將相鄰的兩個(gè)數(shù)比較這樣每次都會排出數(shù)組中最大或最小的數(shù)。然后再次執(zhí)行外層循環(huán),再繼續(xù)進(jìn)入內(nèi)層循環(huán) 再依次進(jìn)行比較。 選擇排序則是,第一次循環(huán):咬定第一個(gè)數(shù)角標(biāo)i=0的元素,依次與后面的元素比較,將最小或最大的數(shù)排出來,再進(jìn)入 外層的第二次循環(huán),并且此時(shí)咬定的數(shù)為角標(biāo)為1的元素,但因?yàn)橹耙褜⑷珨?shù)組中最小或最大的數(shù)排出所以沒有必要再 與數(shù)組中角標(biāo)為零得數(shù)比較 而是通過 j=i+1 將待比較的角標(biāo)變成[ 2、3、...、tempArr.length)。 */ for(int j =i+1;j { if(tempArr[i]>tempArr[j]) { int temp = tempArr[i]; tempArr[i] = tempArr[j]; tempArr[j] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String args[]){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3};arrPrint(arr);sort(arr);arrPrint(arr);} } /*冒泡排序*/ public class MpSort2 { public static void sort(int[] tempArr){ for(int i = 0;i { for(int j = 0;j { if(tempArr[j]>tempArr[j+1]) { int temp = tempArr[j]; tempArr[j] = tempArr[j+1]; tempArr[j+1] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String[] args){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3}; arrPrint(arr); sort(arr); arrPrint(arr);} } 在這忙忙碌碌的這段時(shí)間里,經(jīng)過老師的輔導(dǎo),迅速的將一點(diǎn)沒有學(xué)的JAVA基礎(chǔ)搞定了!有了基礎(chǔ)學(xué)習(xí)還是好,萬事開頭難這句話說的太對了,學(xué)計(jì)算機(jī)語言我覺得記憶好的方法就是多打代碼,課前預(yù)習(xí),課堂上認(rèn)真聽講,把現(xiàn)學(xué)的方法把以前所做的作業(yè)用最簡便的方法再一次鞏固,創(chuàng)新最重要,在后續(xù)的學(xué)習(xí)中,得要加倍努力學(xué)習(xí)。 其實(shí)學(xué)java有不懂,要先自己思考。想清楚這句代碼是什么意思。為什么要寫在這,等等之類的。等你真的搞不明白的時(shí)候,就一定要向老師咨詢,不要感到有什么丟人的。因?yàn)椴粫呛苷5氖?。并不是每個(gè)人都是天才,一學(xué)就會,一學(xué)就能運(yùn)用自如的。學(xué)java有一點(diǎn)是非常重要的,就是練習(xí)。一段代碼要不停的敲,多敲幾遍,尤其是自己不熟悉或者不熟練的代碼,更要敲。不要感覺到厭煩,其實(shí)我感覺敲代碼挺好玩的,并不是一件很枯燥的事。 老師平常布置的課后上機(jī)練習(xí)題一定要做,課后的練習(xí)題能夠讓你把新學(xué)到的知識鞏固一遍,能夠加深記憶,不會讓你在以后做題的時(shí)候感到?jīng)]一點(diǎn)思路。 當(dāng)感覺到不會的時(shí)候,千萬不要?dú)怵H,因?yàn)檫@很正常,現(xiàn)在的學(xué)習(xí)就是為了培養(yǎng)你有一個(gè)邏輯思維,為了以后開發(fā)軟件的時(shí)候有個(gè)完整,清晰的思路。 其實(shí),總體來說。學(xué)習(xí)java很快樂。尤其是當(dāng)你遇到一道自己不會的題,然后,又通過自己的努力解決了,那時(shí)候,那種心情不是用言語來表達(dá)的。就好像你遇到一個(gè)數(shù)學(xué)難題,自己解決了之后那種成就感一樣。 學(xué)java的時(shí)候一定要,放松心情,輕輕松松的來學(xué),隨時(shí)讓自己快樂著,這樣能夠讓你能夠更快的接受java,千萬不要有什么心理負(fù)擔(dān),因?yàn)閖ava的特點(diǎn)之一就是--簡單易懂。只要自己努力到了,就一定能夠?qū)W好java。 學(xué)完了JAVA今天我們用項(xiàng)目案例:迷你DVD管理器來鞏固了我們所學(xué)的所有內(nèi)容,通過這項(xiàng)目的操練,首先,1、項(xiàng)目用到了會使用順序、分支、循環(huán)、跳轉(zhuǎn)語句編寫程序,2、要會使用數(shù)組、操作字符串,3、會使用帶參的方法; 4、會定義類、創(chuàng)建和使用對象,看到這些腦袋里一片迷茫??!不知道怎樣寫,然后想到早寫晚寫都一樣,就照著書上寫起來了,到現(xiàn)在還是弄不懂的就是那個(gè)對象數(shù)組,不知道怎樣去理解,抽象的把我抽暈了,有望老師來給我們補(bǔ)補(bǔ)這一章,在實(shí)現(xiàn)DVD的業(yè)務(wù)處理時(shí),計(jì)算時(shí)差還是不懂,照著書上打了一遍,可還是得不到想要的結(jié)果,經(jīng)過網(wǎng)上的搜尋與老師講解,現(xiàn)在已略懂一二了,在做完這項(xiàng)目后,真不知道當(dāng)時(shí)是怎樣敲出來的,難道這就是所說的靈感!感覺很高興,現(xiàn)在已習(xí)慣了代碼報(bào)錯(cuò),其實(shí)代碼報(bào)錯(cuò)是一件值得鼓勵(lì)的事,因?yàn)闆]有錯(cuò)就覺得自己什么都懂了,在學(xué)習(xí)中相信每一個(gè)人都遇到過挫折吧!但一定要想方法戰(zhàn)勝挫折!我的戰(zhàn)勝挫折方法就是不懂思考后還不懂就問,懂了以后就筆記本記下當(dāng)時(shí)的解決方案!學(xué)習(xí)剛開始!后面的路很長,慢慢的去磨煉了!總結(jié)完畢! Java實(shí)驗(yàn) 1.調(diào)試HelloWorld程序 2.this,super,get ,set,把課本90頁程序4.7中的name改成私有變量 3.繼承,重寫,父類引用指向子類對象 4.驗(yàn)證數(shù)組Arrays類和Collection類 5.編寫一個(gè)自己的異常類并捕獲之。 6.編寫一個(gè)類,將該類的幾個(gè)對象裝入TreeSet容器中,并將該容器的內(nèi)容通過輸出流寫入文件中。 前三章重點(diǎn) 0.java的數(shù)據(jù)類型:四類八種-(1)布爾類型Boolean;(2)字符類型char;(3)整數(shù)byte,short,int,long;(4)浮點(diǎn)類型:float,double;1.面向?qū)ο蟮?個(gè)基本特征:封裝,繼承,多態(tài)。 2.構(gòu)造方法和普通方法的區(qū)別:對構(gòu)造方法而言,它有以下特性---(1)方法名必須與要?jiǎng)?chuàng)建對象的類名相同。(2)不允許聲明返回類型,即使聲明為void也不被允許。 3.this關(guān)鍵字:是一個(gè)引用,this引用指向的是其本身所在方法的當(dāng)前對象。this的使用方法:(1)調(diào)用成員變量;(2)可以用this()調(diào)用其他構(gòu)造函數(shù)。 4.java中只對類成員變量進(jìn)行自動(dòng)初始化,而方法內(nèi)部的局部變量在使用前必須手動(dòng)初始化。 5.static 關(guān)鍵字:可用來修飾類的成員變量和成員方法,需要注意兩點(diǎn)--(1)靜態(tài)方法不能調(diào)用類的非靜態(tài)方法,不能訪問類的非靜態(tài)變量。(2)靜態(tài)方法和靜態(tài)變量(非私有的)可以有兩種調(diào)用方式,一是實(shí)例對象調(diào)用,二是類名直接調(diào)用。 6.類成員訪問控制修飾符public、private、default(可不寫,即缺省狀態(tài))、protected的使用:public-公用的;private-私有的,只在定義它的類內(nèi)部使用;default-可以被同一包中的類訪問;protected-既可以被同一包中的類訪問,也可以被不在同一包中的子類訪問。 7.方法的重載:指方法名相同,而方法的參數(shù)列表不相同。參數(shù)列表不同有三層意思:(1)參數(shù)類型不同。(2)參數(shù)順序不同。(3)參數(shù)個(gè)數(shù)不同。另外需注意,在同一個(gè)類中,當(dāng)方法名和參數(shù)列表都相同時(shí),訪問控制修飾符或方法返回類型不相同并不是方法的重載,而且這種情況在java中是不被允許的。 第四五章重點(diǎn) 1.繼承:需使用關(guān)鍵字extends.在使用繼承時(shí)需注意--(1)每個(gè)子類只能定義一個(gè)超類(父類),即extends后面應(yīng)且僅應(yīng)跟一個(gè)類名作為該類的父類。(2)父類中的私有屬性和私有方法不能被繼承。 2.方法的重寫:即子類對超類中的方法保持方法名、返回類型和參數(shù)列表不變,重寫了方法體,使子類和超類完成不同的工作。重寫需注意下面幾個(gè)關(guān)鍵點(diǎn):(1)超類中的私有方法不能被重寫。(2)訪問限制符強(qiáng)度由低到高依次是:public、protected、default、private,在重寫過程中,如果子類和父類中方法的返回值、方法名及方法的參數(shù)列表都相同,這時(shí),要求子類中該方法的訪問限制符強(qiáng)度不能超過父類的。即如果父類中為public時(shí),子類也只能為public,而不能是余下的三種。 3.重載(overload)和覆蓋(override)的區(qū)別:(1)重載—發(fā)生在一個(gè)類的內(nèi)部或子類與父類之間,要求方法名相同而參數(shù)列表不一樣。(2)覆蓋—只能發(fā)生在繼承過程中,要求子類方法的返回類型,方法名和參數(shù)列表同父類的都相同,而方法體不一樣。 4.構(gòu)造器的調(diào)用順序:先祖先,再客人,最后自己。 5.多態(tài):指在類繼承中子類和父類中可以有同名但意義或?qū)崿F(xiàn)方式不同的屬性和方法。分為:覆蓋和重載。多態(tài)的優(yōu)點(diǎn):因?yàn)槎鄳B(tài),可以在程序中對類進(jìn)行擴(kuò)展,而不需改變那些操作基類接口的方法。 6.動(dòng)態(tài)綁定:指在代碼執(zhí)行期間,判斷所引用對象的實(shí)際類型,根據(jù)其實(shí)際類型調(diào)用相應(yīng)方法。動(dòng)態(tài)綁定存在的三個(gè)必要條件--(1)要有繼承;(2)要有重寫(覆蓋);(3)父類引用指向子類對象(向上轉(zhuǎn)型)。 7.Object中常用的方法總結(jié):toString();wait();equals();notify();notifyAll();hashCode();getClass();clone();finalize();(呵呵,盡可能記幾個(gè),以防老師讓咱們列舉)注:java中Object類是所有類的父類,即java中所有的類都有上述9種方法。 8.對象的比較:注意關(guān)鍵字instanceof的使用。 9.抽象類: 抽象方法—用關(guān)鍵字abstract修飾的方法,該方法只需方法的聲明,而不需方法的實(shí)現(xiàn)(即無方法體)。 抽象類——至少包含一個(gè)抽象方法的類,也用abstract關(guān)鍵字聲明。(注:(1)抽象類中可以有一些具體方法。(2)抽象類不能實(shí)例化。(3)子類繼承抽象類必須實(shí)現(xiàn)其抽象方法。) 10.接口: (1)可以看成是高度抽象的抽象類,但是接口不是類。 (2)用關(guān)鍵字interface來聲明接口,用關(guān)鍵字imlpements來實(shí)現(xiàn)接口。 (3)接口不能有具體方法,不能有實(shí)例數(shù)據(jù),但可以定義常量。 (4)實(shí)現(xiàn)接口的非抽象類必須實(shí)現(xiàn)接口的所有方法。 (5)每個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這些接口用逗號隔開,同時(shí),一個(gè)接口可以被多個(gè)類實(shí)現(xiàn)。 第六章:重點(diǎn)看一下實(shí)驗(yàn)四 1.容器——Collection(接口)和Map(接口).Collection——Set(接口)和List(接口)。其中,List必須保持元素的特定順序,常見的實(shí)現(xiàn)類有ArrayList和LinkedList;Set不能有重復(fù)元素,常見的實(shí)現(xiàn)類有HashSet和TreeSet。 Map——一組成對的“鍵值對”對象,即其元素是成對的對象,常見的實(shí)現(xiàn)類有HashMap和TreeMap。 第七章 1.異常類的根類是Throwable類,它的兩個(gè)直接子類是Error類和Exception類。 2.異常中常用的5個(gè)關(guān)鍵字為:try,catch,finally,throw,throws.其中,try和catch:用于捕獲異常;finally:無論try塊中的異常是否拋出,finally中的代碼塊總能被執(zhí)行;throw:拋出異常;throws:聲明異常。 3.“未被檢查的異常(Unchecked Exceptions)”和“受檢查的異常(Checked Exceptions)”—— Unchecked Exceptions :編譯器不檢查方法是否處理或拋出的異常,即不做處理,編譯時(shí)不報(bào)錯(cuò)。 Checked Exceptions:受編譯器檢查的異常,即不做處理編譯時(shí)通不過。 4.常見的幾種Checked Exceptions:ClassNotFoundExceptionIOExceptionInterruptedExceptionFileNotFoundException.(盡可能的記幾個(gè)吧,以防不測)第八章 1.流--字節(jié)流和字符流; 流--節(jié)點(diǎn)流和處理流。 2.所有的輸入流都是從抽象類InputStream和Reader繼承而來。所有輸出流都是從抽象類OutputStream和Writer繼承而來。3.字節(jié)流:InputStream和OutputStream;字符流:Reader和Writer; 4.節(jié)點(diǎn)流:直接與文件等底層打交道,如FileInputStreamFileOutputStreamFileReaderFileWriter.處理流:相當(dāng)于包裝流,套在節(jié)點(diǎn)流上,方便數(shù)據(jù)處理。相關(guān)一些用法,具體參考最后一次實(shí)驗(yàn)。第二篇:JAVA四種基本排序的總結(jié)
第三篇:冒泡排序及選擇排序Java實(shí)現(xiàn)心得
第四篇:JAVA總結(jié)專題
第五篇:Java總結(jié)