斐波拉契数列
int a[10] = {1,1}; for (int i = 2; i < 10; i++) { a[i] = a[i-1]+a[i-2]; } // [1,1,2,3,5,8,13,21,34,55] for (int i = 0; i < 10; i++) { printf("%d\n",a[i]); }
冒泡排序法
int a[10] = {5,4,2,6,7,1,8,3,9,10}; int count = sizeof(a) / sizeof(int); for (int i = 0; i < count; i++) { for (int j = 0; j < count-i; j++) { if (a[j] > a[j+1]) { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } for (int i = 0; i < 10; i++) { printf("%d\n",a[i]); }
选择排序法
int a[10] = {5,4,2,6,7,1,8,3,9,10}; int count = sizeof(a) / sizeof(int); for (int i = 0; i < count; i++) { for (int j = i; j < count; j++) { if (a[j] > a[i]) { int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } for (int i = 0; i < 10; i++) { printf("%d\n",a[i]); }
二分法查找
int a[10] = {1,2,3,4,5,6,7,8,9,10}; int start = 0,end = 10,mid; int dest = 8; while (start <= end) { mid = (start + end ) /2; if (dest == a[mid]) { printf("%d %d\n",mid,a[mid]); break; }else if (dest > a[mid]) { start = mid+1; } else if (dest < a[mid]){ end = mid-1; } }
递归
int fab(int num);
int main(){
int mm = fab(6);
printf("%d\n",mm);
}
int fab(int num)
{
if (num == 1) {
return 1;
} else {
return num * fab(num - 1);
}
}
汉诺塔