Algorithm
Ming-L
记忆、理解、应用、分析、评鉴、创造
展开
-
分治法求m的n次方
int power(int m,int n){ if(n==1) return m; else if(n%2==1){ return m*power(m,(n-1)/2)*power(m,(n-1)/2); }else{ return power(m,n/2)*power(m,n/2); }}原创 2014-03-19 15:20:56 · 1223 阅读 · 0 评论 -
两个n位二进制数相加
题目有两个各存放在数组A和B中的n位二进制整数,考虑他们的相加问题。两个整数的和存放在有n+1个元素的数组C中,请给出这个问题的形式化描述,并给出伪代码。void binaryAdd(int a[],int b[], int c[], int n){ int i,key,flag=0; for(i=0; i<n; i++) { key原创 2014-03-19 15:10:40 · 1457 阅读 · 0 评论 -
冒泡排序
void bublleSort(int array[],int length){ int i,j,temp; int flag; for(j=0;j<length-1;j++){ flag = 1; for(i=0;i<length-1-j;i++){原创 2014-03-19 15:18:45 · 311 阅读 · 0 评论 -
归并排序
void merge(int array[],int first,int last,int mid){ int array_temp[10]={0}; int i=first,j=mid+1,k; for(k=0;k<=last-first;k++) { if (i==mid+1) { array_temp[原创 2014-03-19 15:15:48 · 308 阅读 · 0 评论 -
最大子数组
//基础解法:O(n*n) int maxSubSum(int array[],int length){ int i,j,sum=0,temp; for(i=0;i<length;i++) { temp=0; for(j=i;j<length;j++) { temp += array[j];原创 2014-03-19 15:19:17 · 368 阅读 · 0 评论 -
二分插入排序
void twoInsertSort(int array[],int n){ int left,right,num; int middle,j,i; for(i = 1;i < n;i++) { left = 0; right = i-1; num = array[i];原创 2014-03-19 15:17:06 · 347 阅读 · 0 评论 -
堆排序
#include void swap(int &a,int &b){ int temp; temp = a; a = b; b = temp;} //µ÷Õû¶Ñ£¬±£³Ö×î´ó¶ÑµÄÐÔÖÊ void HeapAdjust(int *array,int i,int length){ int lchild = 2*i; int rchild = 2*i+1; int原创 2014-04-17 13:57:02 · 314 阅读 · 0 评论 -
直接插入排序
void insertSort(int array[],int length){ int i,j,key; for(i=1;i<length;i++) { key=array[i]; j=i-1; while (j>=0 && array[j]>key) { array[j+1]=a原创 2014-03-19 15:14:42 · 415 阅读 · 0 评论 -
简单选择排序
void selectSort(int array[],int length){ int i,j,temp,index; for(i=0;i<length-1;i++) { index = i; for(j=i+1;j<length;j++) { if(array[j]<array[in原创 2014-03-19 15:15:11 · 302 阅读 · 0 评论