排序
前言
一些排序方法在對多個數的排序上能夠簡化很多步驟,其主要依靠的是陣列,通過數與數之間的不斷交換來實作功能,這里簡單介紹一下冒泡排序和選擇排序,
方法一——冒泡排序
我們這里用以小到大的順序來排,我們先來理一理思路,要讓小的數冒到前面來,我們是不是可以嘗試將小數和大數交換位置?即每一次只需要考慮前面的數是不是大于后面的數,是就調位置,不是就試下一組,這樣邏輯就很清晰了,而且比較簡單,
//我們先來創建一個陣列
int[] num = {5,3,1,2,6,4};
//然后是for回圈
for(int j = 0;j<num.length;j++) {
for(int i = 0;i<num.length-1;i++) {
int f = num[i];
if(num[i]>num[i+1]) {
//如果下一個數要小一些就調換位置
num[i] = num[i+1];
num[i+1] = f;
/*與此同時下一個數的位置要變成前一個數,否則就會丟失資料
所以要在最前面記錄一個num[i]的中間值,將其賦值給后一個位置
}
}
!注意:num.length表示陣列的元素個數,而為什么要-1呢,我們想一想我們要調換的是前一個數和后一個數,如果我們沒有減一,那么for回圈就會進行到最后一個數上,而最后一個數就沒有下一個數了,
這就是比較簡單的冒泡了,讓我們看看結果,

方法2——選擇排序
讓我們思考一下,有沒有一種方法尋找到指定數之后的最小數,直接將后面最小的數和前面的數來交換,這就是即將介紹的方法2
首先還是理一下思路,我們指定一個數后就要讓其和后面的所有數比較,如果有比它小的數就記下,然后尋找后面有沒有比這個小數還要小的數,然后再將最小數和指定的數交換,這就是一個完整的程序,
int[] num = {5,3,1,2,6,4,9,7,8};
for(int j = 0;j<num.length-1;j++) {
int f = num[j],k=j;/*用k表示指定數的位置,這和方法一不一樣,因為我
們要找到指定的最小數是第幾個,這樣才方便賦值,而現將j賦值給k是為了讓
第一次選出來的較小數都一定能夠小于num[k]*/
for(int i = j+1;i<num.length;i++) {
if(num[j]>num[i]) {
//找到了較小數,還要判斷它是不是最小數
if(num[i]<num[k]) {
k=i; //確定是比較小數還要小的數就記錄下來
num[j]=num[k];
num[k]=f;
}
}
}
}
這就是方法二,讓我們來看看運行結果

總結
以上就是目前我知道的兩種冒泡排序,這里我展示一下它們的影片版,便于大家理解
冒泡排序

選擇排序

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/197068.html
標籤:其他
上一篇:?iPhone 12全線跌破發行價;三星擴大眾包定位網路;Fedora 33發布|極客頭條
下一篇:廈門國際銀行數創金融杯建模大賽
