一:氣泡排序
1view codevoid m_sort(long a, longn)2
14}15if(flat == 0) break;16}
17*/
18//
第二種寫法
19for(i = n -1 ; i>0; i--)
2029}30
if(flat == 0 ) break;31
}32 }
二:插入排序
1view codevoid x_sort(long a,longn)2
13a[j] = temp; 插入新位置14}
*/15
for(x = 1;x)
1621
}22 }
三:堆排序
1view codevoid swap(long a, int i, intj)2
7void precdown(long a,int i , intn)8
18if(a[child]<=tmp)
19else
2225
}26 a[parent] =tmp; 27}
28void heap_sort(long a,int
n) 29
35for(i = n-1;i>0;i--)
3640 }
四:歸併排序
1view codevoid merge(long a,long tmpa,int l,int r,int
rightend)
12//
也許左沒走完
13while( l <=leftend )
14 tmpa[tmp++] = a[l++];
15//
也許右邊沒走完
16while( r <=rightend)
17 tmpa[tmp++] = a[r++];
18//
再導回 a ,tmp此時已經越界,所以要先減再用
19for(int i=0;i)
20 a[rightend--] = tmpa[--tmp];21}
2223
//分治
24void msort(long a,long tmpa,int l,int
rightend)31}
3233
void merge_sort(long a,int
n)
五:選擇排序
1view codevoid x_sort(long a,longn)2
12swap(a,i,targer);13}
1415
16 }
六:快速排序
1view codevoid quick_sort(int a, int l, intr)2
7int x = l,y =r;
8int key =a[x];
9while(x
1015 a[x]=a[y];
16while(x < y && a[x] <=key)
1720 a[y] =a[x];21}
22 a[x] =key;
23 quick_sort(a,l,x-1
);24 quick_sort(a,y+1
,r);
25 }
排序演算法之排序
private static void insertsort int ints 時間複雜度 o n 2 空間複雜度 o 1 private static void mergesort int ints,int left,int right private static void merge int ...
排序演算法 排序演算法之選擇排序
最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...
演算法之排序演算法
1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...