複雜度為n2的演算法
/* 氣泡排序
* input int陣列 length of 陣列
* 輸出 在int陣列上原地排序
void bubble(int a, int n)
int i,j,temp;
for (i = 0; i < (n - 1); i++ )
for ( j= n - 1; j > i; j-- ) //end of for 2
a[j+1] = key ;
printf("%d /n",j);
}//end of for 1
//printf("%d",n);
//插入排序的遞迴實現
void insertsortrecurse(int a, int n)
if (n > 1) //end of for 2
a[j+1] = key ;
// print(a,n);
//getchar();
複雜度為nlogn的演算法
/* 合併排序
* input int陣列 length of 陣列
* 輸出 在int陣列上原地排序
* 兩個函式 merge 是主函式遞迴的將陣列劃分
* mergesort 將兩個排過序的陣列合併
* 錯誤:if ( i == p - b +1 ) 寫成 if ( i = p - b +1 )
void mergesort(int a,int b, int e, int p)
// printf("b = %d p = %d e = %d/n", b ,p,e);
int t1[p - b +1] ;
int t2[e - p] ;
int i,j,k;
for (i = 0; i < (p - b +1); i++ )
t1[i] = a[b+i];
for (i = 0; i < (e - p); i++ )
t2[i] = a[p+1+i];
// print(t1 ,p - b +1 );printf("[%d]/n",p - b +1);
// print(t2 ,e-p );printf("[%d]/n",e-p);
i = 0;
j = 0;
k = b;
while ( (i < (p - b +1)) && (j < (e - p)) ) }
}void buildmaxheap(int a, int n)
} void heapsort(int a, int n)
}
我理解的演算法 排序
萬事開頭難。重新開頭更難。本來現在的水平寫不出來個啥,可是不開始永遠也無法開始。重回這條不歸路,視野啊 遠見啊未必比那些純新人好,只能更努力一點了。在現有見識的邊界內,我對演算法 資料結構 設計模式等異常重視,基礎比想象的重要。即使有人編碼幾年了,這些基礎依然很爛但卻沒影響拿工資,我也依舊重視。這些...
我的演算法筆記 快速排序
由c.a.r.hoare在1962年提出,因為此演算法而獲得圖靈獎。它是一種遞迴演算法,核心思想是 先找出乙個數的應該在的位置,將數列分為左右兩部分,左右兩部分分別進行排序。我們先找到 k 的位置,i 指標先向後移動,所指元素如果比k大,就停止,此時再由 j 由隊尾向前遍歷,如果 j 指向元素比k小...
我所知道的排序演算法之歸併排序
基本介紹 歸併排序 merge sort 是利用歸併的思想實現的排序方法,該演算法採用經典的分治 divide and conquer 策略 分治法將問題分 divide 成一些小的問題然後遞迴求解,而治 conquer 的階段則將分的階段得到的各答案修補 在一起,即分而治之 基本思想 1.把陣列從...