diff --git a/LongestSubSequence.c b/LongestSubSequence.c new file mode 100644 index 00000000..b1d74a41 --- /dev/null +++ b/LongestSubSequence.c @@ -0,0 +1,88 @@ +#include +#include + + +void longestSub(int* ARRAY,int ARRAY_LENGTH, int** RESULT,int* RESULT_LENGTH){ //RESULT and RESULT_LENGTH will be modified by their pointers + + if(ARRAY_LENGTH <= 1){ + *RESULT=ARRAY; + *RESULT_LENGTH = ARRAY_LENGTH; + } + else{ + int PIVOT = ARRAY[0]; + int *LONGEST_SUB = NULL; + int i, j, LONGEST_SUB_LENGTH = 0; + int TEMPORARY_ARRAY_LENGTH = 0, *TEMPORARY_ARRAY = NULL; + + for(i = 1; i < ARRAY_LENGTH; i++){ + if (ARRAY[i] < PIVOT){ + + TEMPORARY_ARRAY_LENGTH = 0; + TEMPORARY_ARRAY = NULL; + + for(j = i+1;j < ARRAY_LENGTH; j++){ + if(ARRAY[j] >= ARRAY[i]){ + + TEMPORARY_ARRAY_LENGTH++; + TEMPORARY_ARRAY = (int *)realloc(TEMPORARY_ARRAY, TEMPORARY_ARRAY_LENGTH*sizeof(int)); + TEMPORARY_ARRAY[TEMPORARY_ARRAY_LENGTH-1] = ARRAY[j]; + } + } + + longestSub(TEMPORARY_ARRAY, TEMPORARY_ARRAY_LENGTH, &TEMPORARY_ARRAY, &TEMPORARY_ARRAY_LENGTH); + if(LONGEST_SUB_LENGTH < TEMPORARY_ARRAY_LENGTH + 1){ + + LONGEST_SUB_LENGTH = TEMPORARY_ARRAY_LENGTH + 1; + LONGEST_SUB = (int *)realloc(LONGEST_SUB, LONGEST_SUB_LENGTH*sizeof(int)); + LONGEST_SUB[0] = ARRAY[i]; + + for(i = 1;i < LONGEST_SUB_LENGTH; i++) + LONGEST_SUB[i] = TEMPORARY_ARRAY[i-1]; + } + } + } + + TEMPORARY_ARRAY = NULL; + TEMPORARY_ARRAY_LENGTH = 0; + for(i = 1;i < ARRAY_LENGTH; i++){ + + if(ARRAY[i] >= PIVOT){ + TEMPORARY_ARRAY_LENGTH++; + TEMPORARY_ARRAY = (int *)realloc(TEMPORARY_ARRAY, TEMPORARY_ARRAY_LENGTH*sizeof(int)); + TEMPORARY_ARRAY[TEMPORARY_ARRAY_LENGTH-1] = ARRAY[i]; + } + } + + longestSub(TEMPORARY_ARRAY, TEMPORARY_ARRAY_LENGTH, &TEMPORARY_ARRAY, &TEMPORARY_ARRAY_LENGTH); + if(TEMPORARY_ARRAY_LENGTH + 1 > LONGEST_SUB_LENGTH){ + + LONGEST_SUB_LENGTH = TEMPORARY_ARRAY_LENGTH + 1; + LONGEST_SUB = (int *)realloc(LONGEST_SUB, LONGEST_SUB_LENGTH*sizeof(int)); + LONGEST_SUB[0] = PIVOT; + for(i = 1;i < LONGEST_SUB_LENGTH; i++) + LONGEST_SUB[i] = TEMPORARY_ARRAY[i-1]; + } + *RESULT = LONGEST_SUB; + *RESULT_LENGTH = LONGEST_SUB_LENGTH; + } + + +} + +int main(){ + + int EXAMPLE_LENGTH = 8; + int EXAMPLE[] = {18, 2, 15, 4, 30, 0, 11, 12}; + + int *RESULT = NULL; + int RESULT_LENGTH, i; + + longestSub(EXAMPLE, EXAMPLE_LENGTH, &RESULT, &RESULT_LENGTH); + + printf("Longest Sub Sequence length: %d and it's:\n", RESULT_LENGTH); + for(i = 0;i < RESULT_LENGTH; i++) + printf("%d ",RESULT[i]); + printf("\n"); + + return 0; +} \ No newline at end of file diff --git a/VARIANCE.C b/VARIANCE.C deleted file mode 100644 index 627d71e1..00000000 --- a/VARIANCE.C +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include -void main() -{ - int a[10],n,i,j,temp,sum=0; - float mean,var,stand; - clrscr(); - printf("Enter no. for Random Numbers :"); - scanf("%d",&n); - for(i=0;i +#include +#include + +int main() { + + int *ARRAY=NULL,ARRAY_LENGTH,i,TEMPORARY_ELEMENT,isSorted=0; + float MEAN=0,VARIANCE=0,STAND; + + + printf("Enter no. for Random Numbers :"); + scanf("%d",&ARRAY_LENGTH); + ARRAY=(int *)realloc(ARRAY,ARRAY_LENGTH*(sizeof(int))); //We allocate the dedicated memory + for(i=0;iARRAY[i+1]){ // if the two elements aren't sorted + isSorted=0; //it means that the array is not sorted + TEMPORARY_ELEMENT=ARRAY[i]; //and we switch these elements using TEMPORARY_ELEMENT + ARRAY[i]=ARRAY[i+1]; + ARRAY[i+1]=TEMPORARY_ELEMENT; + } + } + } + for(i=0;i