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.歸併排序
publicclass
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 ...