版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java常用排序算法排序是計(jì)算機(jī)程序中常見的操作之一。在日常編程中,我們經(jīng)常需要對(duì)一組數(shù)據(jù)進(jìn)行排序,以便更好地處理和使用這些數(shù)據(jù)。Java提供了各種排序算法,可以根據(jù)不同的需求選擇合適的算法。本文將介紹Java中常用的幾種排序算法。1.冒泡排序(BubbleSort)冒泡排序是一種簡(jiǎn)單的排序算法,它重復(fù)地遍歷要排序的序列,比較相鄰的元素,并按照規(guī)定的順序交換它們。如果需要按照升序排序,那么每一輪遍歷都會(huì)將序列中最大的元素冒泡到末尾。publicclassBubbleSort{
publicstaticvoidbubbleSort(int[]arr){
intn=arr.length;
for(inti=0;i<n-1;i++){
for(intj=0;j<n-i-1;j++){
if(arr[j]>arr[j+1]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}2.選擇排序(SelectionSort)選擇排序是一種簡(jiǎn)單直觀的排序算法。它的思路是每一次從待排序的數(shù)據(jù)中選擇最?。ɑ蜃畲螅┑囊粋€(gè)元素,放到序列的起始位置。經(jīng)過一輪輪的比較和選擇,最終得到排序好的序列。publicclassSelectionSort{
publicstaticvoidselectionSort(int[]arr){
intn=arr.length;
for(inti=0;i<n-1;i++){
intminIndex=i;
for(intj=i+1;j<n;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
inttemp=arr[minIndex];
arr[minIndex]=arr[i];
arr[i]=temp;
}
}
}3.插入排序(InsertionSort)插入排序是一種簡(jiǎn)單直觀的排序算法,它的工作原理是通過構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。publicclassInsertionSort{
publicstaticvoidinsertionSort(int[]arr){
intn=arr.length;
for(inti=1;i<n;i++){
intkey=arr[i];
intj=i-1;
while(j>=0&&arr[j]>key){
arr[j+1]=arr[j];
j=j-1;
}
arr[j+1]=key;
}
}
}4.快速排序(QuickSort)快速排序是一種高效的排序算法,它采用了分治的思想?;舅悸肥沁x擇一個(gè)基準(zhǔn)元素,通過一趟排序?qū)⑿蛄蟹殖蓛蓚€(gè)子序列,然后分別對(duì)這兩個(gè)子序列遞歸進(jìn)行排序,最終得到有序序列。publicclassQuickSort{
publicstaticvoidquickSort(int[]arr,intlow,inthigh){
if(low<high){
intpivotIndex=partition(arr,low,high);
quickSort(arr,low,pivotIndex-1);
quickSort(arr,pivotIndex+1,high);
}
}
privatestaticintpartition(int[]arr,intlow,inthigh){
intpivot=arr[low];
while(low<high){
while(low<high&&arr[high]>=pivot){
high--;
}
arr[low]=arr[high];
while(low<high&&arr[low]<=pivot){
low++;
}
arr[high]=arr[low];
}
arr[low]=pivot;
returnlow;
}
}5.歸并排序(MergeSort)歸并排序是一種穩(wěn)定的排序算法,它采用了分治的思想?;舅悸肥菍⒋判虻男蛄胁粩鄤澐殖蓛蓚€(gè)子序列,直到每個(gè)子序列只有一個(gè)元素,然后將這些子序列兩兩合并,最終得到有序序列。publicclassMergeSort{
publicstaticvoidmergeSort(int[]arr,intlow,inthigh){
if(low<high){
intmid=(low+high)/2;
mergeSort(arr,low,mid);
mergeSort(arr,mid+1,high);
merge(arr,low,mid,high);
}
}
privatestaticvoidmerge(int[]arr,intlow,intmid,inthigh){
int[]temp=newint[high-low+1];
inti=low;
intj=mid+1;
intk=0;
while(i<=mid&&j<=high){
if(arr[i]<=arr[j]){
temp[k]=arr[i];
i++;
}else{
temp[k]=arr[j];
j++;
}
k++;
}
while(i<=mid){
temp[k]=arr[i];
i++;
k++;
}
while(j<=high){
temp[k]=arr[j];
j++;
k++;
}
for(intm=0;m<temp.length;m++){
arr[m+low]=t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版南京綠色建筑項(xiàng)目能源合同管理協(xié)議4篇
- 2025年度特色苗木種植與市場(chǎng)推廣服務(wù)合同4篇
- 2025年度鋁合金門窗企業(yè)戰(zhàn)略合作伙伴合同范本
- 2025年度時(shí)尚服飾區(qū)域分銷代理合同
- 2025年度高校教授職務(wù)評(píng)審及聘任合同4篇
- 二零二五年度土石方工程地質(zhì)災(zāi)害預(yù)警與應(yīng)急處理合同
- 二零二五年度冷鏈倉(cāng)儲(chǔ)與運(yùn)輸一體化服務(wù)合同4篇
- 二零二五年度棉花產(chǎn)業(yè)安全生產(chǎn)管理合同4篇
- 2025版美發(fā)師創(chuàng)業(yè)孵化項(xiàng)目聘用合同2篇
- 二零二五年度奢侈品銷售團(tuán)隊(duì)聘用合同范本
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 2025-2030年中國(guó)糖醇市場(chǎng)運(yùn)行狀況及投資前景趨勢(shì)分析報(bào)告
- 冬日暖陽(yáng)健康守護(hù)
- 水處理藥劑采購(gòu)項(xiàng)目技術(shù)方案(技術(shù)方案)
- 2024級(jí)高一上期期中測(cè)試數(shù)學(xué)試題含答案
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊(cè)
- 天然氣脫硫完整版本
- 山東省2024-2025學(xué)年高三上學(xué)期新高考聯(lián)合質(zhì)量測(cè)評(píng)10月聯(lián)考英語(yǔ)試題
- 不間斷電源UPS知識(shí)培訓(xùn)
- 三年級(jí)除法豎式300道題及答案
- 人教版八級(jí)物理下冊(cè)知識(shí)點(diǎn)結(jié)
評(píng)論
0/150
提交評(píng)論