陣列的幾種排序方法

2021-08-01 09:01:24 字數 2600 閱讀 1370

1.陣列的氣泡排序

演算法思想:

遍歷待排序的陣列,每次遍歷比較相鄰的兩個元素,如果他們的排列順序錯誤就交換他們的位置,經過一次排序後,最大的元素會浮至陣列的末端,重複操作,直到排序完成

例如比較:

進行比較:

第一次: j=0    8  10    9  50  20  15

j=1    8   9   10  50  20  15

j=2    8   9   10  50  20  15

j=3     8   9   10  20  50 15

j=4     8   9   10  20  15   50

第二次:  j=0  8   9   10  20  15   50

j=1    8   9   10  20  15   50

j=2     8   9   10  20  15   50

j=3     8   9   10  15   20     50

package maopao;

public class maopao ;

//i是比較的次數

for(int i=1;ifor(int j=0;jif(x[j]>x[j+1])}}

for(int i=0;isystem.out.println(x[i]);}}

}2.選擇排序

演算法思想:從待排序的陣列中選擇乙個最小的元素,將它與陣列的第乙個位置的元素交換為值然後從剩下的元素中選擇乙個最小的元素,將它與第二個位置的元素交換位置,如果最小元素就是該位置的元素,就將它和自身交換為值,依次類推,直到排序完成

例如比較:

進行比較:

第一次(最小的元素替換第乙個位置的元素):8  10  9  50  20  15

第二次(最小的元素替換第二個位置的元素):8   9  10 50  20  15

第三次(最小的元素替換第三個位置的元素):8   9  10  15  50   20

第四次(最小的元素替換第四個位置的元素):8  9   10   15  20  50 

package xuanze;

//選擇排序

public class xuanze ;

for(int i=0;iint min=i;

for(int j=i+1;jif(x[j]min=j;}}

int temp=x[min];

x[min]=x[i];

x[i]=temp;

}for(int i=0;isystem.out.println(x[i]);}}

}3.插入排序

演算法思想:從第乙個元素開始,該元素預設為已經被排序好,取出下乙個元素,在已經排序好的元素序列中從後向前掃瞄,如果該元素大於新元素,將愛元素移到下一位,重複直到找到已排序的元素小於或者等於新元素的位置,將新元素插入到該位置中

例如比較:

第一次:i=1 j=1      8 10 9  50  20  15

第二次:i=2 j=2      8  9  10  50  20  15

第三次:i=3 j=3      8  9  10  20  50  15

第四次:i=4 j=4      8  9  10  20   50  15

第五次:i=5 j=5      8  9   10  20  15   50

i=5  j=4      8  9   10  15   20   50

package charu;

//插入排序

public class charu ;

//i是迴圈的次數

for(int i=1;ifor(int j=i;j>0;j--)}}

for(int xx:x)}}

4.快速排序

public class kuaisu  

* 初始時i=0;j=7;base=numbers[0]=5

* 從j向左找第乙個小於base的數是2   此時j=2 將numbers[2]挖出填到numbers[0]中

* 0<=7   所以i<=j  numbers[0]=numbers[2]=2 

* 此時 i=1 j=1

* 此時numbers[2]處是乙個坑 需要將其填充

* 從i向右找第乙個大於或等於base的數,當此處的while執行一次i=2;i* number[2]=base=5

* 此時陣列是: 5

* 此時i=2 j=1

* 遞迴迴圈 排序

*/if(startint base=numbers[start];

int temp;

int i=start,j=end;

//從右向左找第乙個小於等於x的數

while(numbers[j]>base&&(j>start))

if(inumbers[i]=numbers[j];

i++;

}while(i//從左向右找第乙個大於或等於base的數

while(numbers[i]if (i < j)

}numbers[i]=base;

if(startquicksort(numbers,start,j);

if(end>i)

quicksort(numbers,i,end);}}

}

陣列的幾種排序方法

排序就是把亂序的陣列從小到大 從大到小 進行排序,這裡給大家介紹一下最常見的三種排序方法。選擇排序 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。實現如下 ...

陣列排序的幾種方法

演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。氣泡排序 functio...

幾種常見的陣列排序方法

廢話不多說,如下,基本的解釋也有 using system using system.collections.generic using system.linq using system.text namespace suanfa sort ints print ints int ints2 sor...