Beruflich Dokumente
Kultur Dokumente
P. P. Chakrabarti
17-02-03
Binary Search:Recap
int bsearch(A, i,j, data) int *A; int i,j, data; { int k; if (i > j) return -1; /* BASIS CONDITION */ k = (i+j)/2; if (A[k] == data) return k; /* ANOTHER BASIS */ if (A[k] > data) return(bsearch(A, i, k-1,data)); else return(bsearch(A, k+1,j, data)); }
Search mid-point And then either stop Or move left/right Depending on Comparison result
17-02-03
17-02-03
int selsort (int x[], int size) { int k, m, temp; for (k=0; k<size-1; k++) { m = max_loc(x, k, size); temp = x[k]; x[k] = x[m]; x[m] = temp; } } int max_loc(int x[], int k, int size) { int j, pos; pos = k; for (j=k+1; j<size; j++) if (x[j] > x[pos]) pos = j; return pos; }
P.P.Chakrabarti, IIT Kharagpur
17-02-03
Insertion Sort
Ins_Sort(A,B) /* A unsorted, B sorted */ { select a from A; A A {a}; insert a in B to get B keeping B sorted; Ins_Sort(A,B) } /* Initial & basis conditions??? */ insSort (int list[], int size) { int i, item; for (i=1; i<size; i++) { item = list[i] ; /* list[0] to list[i-1] is B and list [i] to list[size-1] is A */ /* INSERT item in its proper place between list[0] and list[i-1] by comparing upwards and pushing smaller elements down the array */ } insSort (int list[], int size) { int i, j, item; for (i=1; i<size; i++) { /* Insert the element in list[i] */ item = list[i] ; for (j=i-1; j>=0; j--) if (item > list[j]) { /* push elements down */ list[j+1] = list[j]; list[j] = item ; } else break; /*inserted, exit loop */ } }
P.P.Chakrabarti, IIT Kharagpur
17-02-03
insSort (int list[], int size) { int i,j, item; for (i=1; i<size; i++) { item = list[i] ; for (j=i-1; j>=0; j--) if (item > list[j]) { list[j+1] = list[j]; list[j] = item ; } else break; }} [ppchak]$ ./a.out 5 9 -1 3 8 5 9, 8, 5, 3, -1,
P.P.Chakrabarti, IIT Kharagpur
17-02-03
insSort (int list[], int size) { int i,j, item; for (i=1; i<size; i++) { printf("i = %d:: ",i); for (j=0;j<size;j++) printf("%d, ",list[j]); printf("\n"); item = list[i] ; for (j=i-1; j>=0; j--) if (item > list[j]) { list[j+1] = list[j]; list[j] = item ; } else break; }} main() { int A[100], i, size; scanf("%d",&size); for (i=0;i<size;i++) scanf("%d",&A[i]); insSort(A,size); printf("Result = "); for (i=0;i<size;i++) printf("%d, ",A[i]); printf("\n"); }
17-02-03
#define N 20 int a[N], i, *p, sum=0; for (i=0; i<N; ++i) sum += *(a+i) ;
#define N 20 int a[N], i, *p, sum=0; for (p=a; p<&a[N]; ++p) sum += *p ;
17-02-03