Ejemplo n.º 1
0
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;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
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');
    
}