int main(int argc, char const *argv[]) { int n = 16; int arr[] = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7}; find_max_subarray(arr, n); return 0; }
section find_max_subarray(int list[], int low, int high) { if (low == high) { section el = {low, high, list[low]}; return el; } else { int mid = (low+high) / 2; section left = find_max_subarray(list, low, mid); section right = find_max_subarray(list, mid+1, high); section cross = find_max_cross_subarray(list, low, mid, high); if (left.sum >= right.sum && left.sum >= cross.sum) { section ret = {left.low, left.high, left.sum}; return ret; } else if (right.sum >= left.sum && right.sum >= cross.sum) { section ret = {right.low, right.high, right.sum}; return ret; } else { section ret = {cross.low, cross.high, cross.sum}; return ret; } } }
int main(int argc, char *argv[]) { int list[LIST_LEN] = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7}; // recursive method, described in the book section result2 = find_max_subarray(list, 0, LIST_LEN - 1); print_section(result2); // faster algorithm section result1 = find_max_value(list); print_section(result1); return 0; }
int main() { //int array[] = { 13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7 }; int array[] = { -1, -1, -1, -1 }; int l = 0, r = 0; int len = sizeof(array) / 4; find_max_subarray(array, len, l, r); if (l > 0) { for (int i = l; i <= r; i++) { std::cout << array[i] << std::endl; } } return 0; }
int main(int argc, const char * argv[]) { int arr[] = {-3,-2,-1}; int length = 3; // int value = 1; // insertion_sort(arr, length); // selection_sort(arr, length); // merge_sort(arr, length); // insertion_sort_recur(arr, length); // quick_sort(arr, length); // print_array(arr, length); struct triple t = find_max_subarray(arr, length); printf("%d %d %d\n", t.from, t.to, t.sum); // printf("%d\n", get_inversion(arr, length)); // printf("%d\n", binary_search(arr, length, value)); // return 0; // char c = '1'; // printf("%d", c + 'A'); }