赞
踩
排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序等
查找算法:二分查找
字符串匹配算法:暴力匹配、KMP算法、Boyer-Moore算法等
数学算法:质数判定、最大公约数、最小公倍数等
统计算法:排序统计法、哈希统计法等
图论算法:深度优先搜索、广度优先搜索、最短路径算法等
动态规划算法:最长递增子序列、最大子段和等
贪心算法:霍夫曼编码、活动选择等
分治算法:归并排序、快速排序、FFT算法等
模拟算法:进程调度模拟、图形旋转等
#include <stdio.h> void bubble_sort(int arr[], int len) { int i, j, temp; for (i = 0; i < len - 1; i++) { for (j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> void quick_sort(int arr[], int left, int right) { if (left >= right) return; int i = left, j = right, pivot = arr[left]; while (i < j) { while (i < j && arr[j] >= pivot) j--; arr[i] = arr[j]; while (i < j && arr[i] <= pivot) i++; arr[j] = arr[i]; } arr[i] = pivot; quick_sort(arr, left, i - 1); quick_sort(arr, i + 1, right); } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); quick_sort(arr, 0, len - 1); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> void select_sort(int arr[], int len) { int i, j, min_index, temp; for (i = 0; i < len - 1; i++) { min_index = i; for (j = i + 1; j < len; j++) { if (arr[j] < arr[min_index]) { min_index = j; } } if (min_index != i) { temp = arr[i]; arr[i] = arr[min_index]; arr[min_index] = temp; } } } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); select_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> void insert_sort(int arr[], int len) { int i, j, temp; for (i = 1; i < len; i++) { temp = arr[i]; j = i - 1; while (j >= 0 && arr[j] > temp) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); insert_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> #include <stdlib.h> void merge(int arr[], int left, int mid, int right, int temp[]) { int i = left, j = mid + 1, k = 0; while (i <= mid && j <= right) { if (arr[i] <= arr[j]) { temp[k++] = arr[i++]; } else { temp[k++] = arr[j++]; } } while (i <= mid) { temp[k++] = arr[i++]; } while (j <= right) { temp[k++] = arr[j++]; } for (i = 0; i < k; i++) { arr[left + i] = temp[i]; } } void merge_sort(int arr[], int left, int right, int temp[]) { if (left >= right) return; int mid = (left + right) / 2; merge_sort(arr, left, mid, temp); merge_sort(arr, mid + 1, right, temp); merge(arr, left, mid, right, temp); } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); int *temp = (int *) malloc(len * sizeof(int)); merge_sort(arr, 0, len - 1, temp); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); free(temp); return 0; }
#include <stdio.h> void shell_sort(int arr[], int len) { int gap, i, j, temp; for (gap = len / 2; gap > 0; gap /= 2) { for (i = gap; i < len; i++) { temp = arr[i]; for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap) { arr[j + gap] = arr[j]; } arr[j + gap] = temp; } } } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); shell_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> void adjust_heap(int arr[], int i, int len) { int left = 2 * i + 1, right = 2 * i + 2, max_index = i, temp; if (left < len && arr[left] > arr[max_index]) { max_index = left; } if (right < len && arr[right] > arr[max_index]) { max_index = right; } if (max_index != i) { temp = arr[i]; arr[i] = arr[max_index]; arr[max_index] = temp; adjust_heap(arr, max_index, len); } } void build_heap(int arr[], int len) { int i; for (i = len / 2 - 1; i >= 0; i--) { adjust_heap(arr, i, len); } } void heap_sort(int arr[], int len) { int i, temp; build_heap(arr, len); for (i = len - 1; i > 0; i--) { temp = arr[0]; arr[0] = arr[i]; arr[i] = temp; adjust_heap(arr, 0, i); } } int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); heap_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
#include <stdio.h> #include <stdlib.h> void count_sort(int arr[], int len) { int i, j, max = arr[0], *count, *bucket; for (i = 1; i < len; i++) { if (arr[i] > max) { max = arr[i]; } } count = (int *) malloc(sizeof(int) * (max + 1)); bucket = (int *) malloc(sizeof(int) * len); for (i = 0; i <= max; i++) { count[i] = 0; } for (i = 0; i < len; i++) { count[arr[i]]++; } for (i = 1; i <= max; i++) { count[i] += count[i - 1]; } for (i = len - 1; i >= 0; i--) { j = count[arr[i]] - 1; bucket[j] = arr[i]; count[arr[i]]--; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。