我的排序演算法

2021-05-24 00:09:34 字數 1328 閱讀 3042

複雜度為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.把陣列從...