氣泡排序,選擇排序,插入排序,歸併排序

2022-05-24 11:27:14 字數 1758 閱讀 6806

1.氣泡排序

氣泡排序的思想,將陣列分為已排(右邊)和未排(左邊)兩部分。排序時每次在未排部分從左向右一次比較相鄰2個元素,如果左大於右則互換位置。

每次都是指標從左邊第乙個依次相鄰比較,到指標指向倒數第二個未排結束比較。

@test

//氣泡排序

public

void

fun4();

int left=0;//

陣列起始索引

int right=arr.length-1;//

陣列末尾索引

int temp=0;

for(int i=right;i>left;i--)}}

system.out.println(arrays.tostring(arr));

}

時間複雜度為o(n^2),(n為陣列元素個數,複雜度為迴圈執行比較的次數);

2.選擇排序

選擇排序思想,將陣列分為已排(左邊)和未排(右邊)兩部分。排序時每次在待排部分選擇乙個最小值並與待排的第乙個元素互換,然後已排部分向右擴充乙個成員。

@test

//選擇排序

public

void

fun5();

int left=0;//

陣列起始索引

int right=arr.length-1;//

陣列末尾索引

for(int i=left;i)

}if(p!=i)

}system.out.println(arrays.tostring(arr));

}

3.插入排序

插入排序,分為已排(左邊)和未排(右邊),排序開始時陣列第乙個元素為已排部分,右邊為未排。

@test

//插入排序

public

void

fun6();

int left=0;//

陣列起始索引

int right=arr.length-1;//

陣列末尾索引

for(int i=left+1;i<=right;i++)

arr[j]=val;//

直到跳出迴圈將快取的待排資料放到位移後留下的空位

} system.out.println(arrays.tostring(arr));

}

4.歸併排序

public

class

mergesort

while(p1<=mid) tmp[k++]=a[p1++];//

如果第乙個序列未檢測完,直接將後面所有元素加到合併的序列中

while(p2<=right) tmp[k++]=a[p2++];//

同上

//複製回原素組

for (int i = left; i <=right; i++)

a[i]=tmp[i];

}public

void mergesort(int a,int start,int

end)

}@test

public

void

test();

mergesort(a, 0, a.length-1);

system.out.println("排好序的陣列:");

for (int

e : a)

system.out.print(e+" ");

}}

選擇排序 氣泡排序 歸併排序 快速排序 插入排序

選擇排序 private static void selectsort int arr,int n 氣泡排序 private static void bubblesort in arr,into n 歸併排序 private static void mergesort int arr,int n p...

排序演算法之選擇排序 插入排序 氣泡排序 歸併排序

1.選擇排序 基本原理 對於給定的一組記錄,第一輪選擇最小 大 值,與第一條記錄進行交換。然後從剩餘元素中,找出最小 大 值,與第二條記錄進行交換,知道記錄中未排序元素個數為0.該演算法時間複雜度為o n 2 def sort quickly data n len data for i in ran...

穩定排序(插入排序 氣泡排序 歸併排序)

插入排序 我們可以從字面意思去理解這個排序方式,可以把序列前後分為兩部分有序序列和待排序列,不斷的在待排序列中取出乙個數按某規則 從大到小或者從小到大 插入到有序序列中,直到待排序列都完成排序結束。演示 視覺化演算法 推薦 ps 本圖出處為此 c語言 實現 void insert sort int ...