前言
在排序算法里面主要是有:冒泡排序壹堰,選擇排序,插入排序骡湖,歸并排序,快速排序峻厚,計(jì)數(shù)排序响蕴,基數(shù)排序。這里主要說(shuō)下比較常見(jiàn)冒泡惠桃,選擇浦夷,插入這三個(gè)排序算法。
冒泡排序
冒泡辜王,冒泡顧名思義就是跟泡泡一樣冒出來(lái)劈狐,放到這個(gè)算法里面來(lái),就是兩兩相比呐馆,大的往后靠肥缔,這樣最多需要N-1次比較就能全部排序完成,看下代碼:
int nums[]={5,6,1,3,10,8}![insert.gif](https://upload-images.jianshu.io/upload_images/5890584-a9b4319194faf5d7.gif?imageMogr2/auto-orient/strip)
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-i-1;j++){
if(nums[j]>nums[j+1]){
//交換兩數(shù)
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
來(lái)個(gè)效果圖:
以上就是冒泡排序汹来,這個(gè)還有個(gè)口訣:多數(shù)來(lái)排序续膳,大的往后小的往前,第一層N-1收班,第二層N-i-1坟岔。
選擇排序
選擇排序就是選擇一個(gè)數(shù),然后選擇后面的數(shù)進(jìn)行對(duì)比摔桦,如果比這個(gè)數(shù)大社付,就互換位置。
int nums[]={5,6,1,3,10,8}
int index;
int temp;
for (int i = 0; i < nums.length - 1; i++) {
index = i;
for (int j = i + 1; j < nums.length; j++) { //從第二個(gè)數(shù)開(kāi)始
if (nums[j] < nums[index]) {
index = j;
}
}
if (index != i) {
temp = nums[i];
nums[i] = nums[index];
nums[index] = temp;
}
}
效果圖如下:
插入排序
把數(shù)字插入到排序好的位置,類(lèi)似于鸥咖,大家按身高排隊(duì)纪隙,然后來(lái)了個(gè)人,只需要一個(gè)個(gè)對(duì)比扛或,插入到比這個(gè)人高一點(diǎn)和矮一點(diǎn)人中間绵咱。
int nums[]={5,6,1,3,10,8}
int i, j;
for (i = 1; i < nums.length; i++) {
int temp = nums[i];//待排序的數(shù)字
for (j = i - 1; j >= 0&&nums[j] > temp; j--) {
nums[j + 1] = nums[j]; //把前一個(gè)移位到后一個(gè)
}
nums[j + 1] = temp;
}
效果圖如下:
以上就是常見(jiàn)的三種算法,當(dāng)然還有些等以后有時(shí)間我會(huì)繼續(xù)完善熙兔。