二分查詢演算法(漢諾塔演算法)
#include
#include
int picktopdisk(char *current,char x);
void hanoi(char *current,int n,char a,char b,char c);
int main()
;
char a='a',b='b',c='c';
hanoi(current,4,a,b,c);
return 0;
}
int picktopdisk(char *current,char x)
void hanoi(char *current,int n,char a,char b,char c)
hanoi(current,n-1,a,c,b);
current[n-1]=c;
count++;
printf("move %d disk %d: %c->%c\n",count,n,a,c);
hanoi(current,n-1,b,a,c);
}
歸併排序
#include
//將有序的
sr[i...m]
和sr[m+1...n]
歸併為有序的
tr[i...n]
void merge(int sr, int tr, int i, int m, int n)
//將
sr[s...t]
歸併排序為
tr1[s...t]
void msort(int sr, int tr1, int s, int t)
}
//主函式,呼叫歸併排序
msort
void main()
;
printf("輸出這個陣列
:\n");
for(i=0;i<10;i++)
printf("%d ",s[i]);
printf("\n");
msort(s,s,0,9);
printf("輸出經過歸併排序後的陣列:
\n");
for(i=0;i<10;i++)
printf("%d ", s[i]);
printf("\n");
}
#include
#include // srand() 以及
rand()
#include // time()
using namespace std;
int partion(int a,int p,int r)
}
tem=a[r];
a[r]=a[i+1];
a[i+1]=tem;
return i+1;
}
void quicksort(int a,int p,int r)
}
int main();
quicksort(array,0,7);
cout<<"輸出這組數
"<
for(int i=0;i<=7;i++)
cout}
二分歸併排序演算法 排序演算法之歸併排序
一 分治模式 許多有用的演算法在結構上是遞迴的 為了解決乙個給定的問題,演算法一次或多次遞迴地呼叫其自身以解決緊密相關的若干子問題。這些演算法典型地遵循分治法的思想 將原問題分解為幾個規模較小但類似於原問題的子問題。遞迴的求解這些問題,然後再合併這些子問題的解來建立原問題的解。分治模式在每層遞迴都有...
遞迴演算法 歸併排序,快速排序,二分查詢
待排序的陣列,演算法輸入 int arrintegers 10 輔助儲存空間 int tempintegers 10 從陣列中間劃分陣列為2個子陣列,遞迴呼叫歸併排序,然後合併 排序過程發生在合併時候 2個子陣列。輔助儲存空間為n。這裡使用的方式和 快速排序分析裡面有差別,這個是交換,那乙個是填坑 ...
二分歸併排序 分治演算法與歸併排序
距離上次寫快排演算法的文章已經過去乙個半月了,和本文要提到的歸併排序演算法類似,快排也是分治思想的一種典型應用,如果有不熟悉快速排序的同學可以翻閱我之前寫過的的快速排序演算法的文章。首先為大家介紹一下什麼是分治,分治是將乙個大問題分割成若干個和原來問題形式相同但規模更小的子問題,然後處理這些小問題,...