kavita.123green
BAN USERpublic static void main(String[] args) {
int[] a = { 5, 4, 6 };
int[] b = new int[7];
b[0] = 13;
b[1] = 2;
b[2] = 1;
b[3] = 18;
b[4] = Integer.MIN_VALUE;
b[5] = Integer.MIN_VALUE;
b[6] = Integer.MIN_VALUE;
sortArray(a);
sortArray(b);
mergeArrays(a, b);
}
private static void mergeArrays(int[] array1, int[] array2) {
// TODO Auto-generated method stub
int j = 0, k = array1.length,i=0;
while(j<array1.length && k<array2.length) {
if (array1[j] > array2[k]) {
array2[i] = array2[k];
array2[k] = Integer.MIN_VALUE;
k++;
} else {
array2[i] = array1[j];
j++;
}
i++;
}
for(int i1=0;i1<array2.length;i1++)
{
System.out.println(array2[i1]);
}
}
private static void sortArray(int[] array) {
// TODO Auto-generated method stub
for (int i = 0; i < array.length; i++) {
for (int j = i+1; j < array.length; j++) {
if (array[i] > array[j]) {
array[i] = array[i] + array[j];
array[j] = array[i] - array[j];
array[i] = array[i] - array[j];
}
}
}
}
Its mentioned that we cant use extra space ... merge sort uses extra space ..while merging...
just look...
MERGE (A, p, q, r )
1. n1 ← q − p + 1
2. n2 ← r − q
3. Create arrays L[1 . . n1 + 1] and R[1 . . n2 + 1]
4. FOR i ← 1 TO n1
5. DO L[i] ← A[p + i − 1]
6. FOR j ← 1 TO n2
7. DO R[j] ← A[q + j ]
8. L[n1 + 1] ← ∞
9. R[n2 + 1] ← ∞
10. i ← 1
11. j ← 1
12. FOR k ← p TO r
13. DO IF L[i ] ≤ R[ j]
14. THEN A[k] ← L[i]
15. i ← i + 1
16. ELSE A[k] ← R[j]
17. j ← j + 1
Non recursive inorder traversal ....beacuse it will start from the leaves..
- kavita.123green September 21, 2012linked list or arraylist is good idea ....
- kavita.123green September 21, 2012hii i m not sure for this solution but please have a look:
1)lets put all the elements in a array nad sort them
2)then map 1st element and last element to first set and 2ns and second last to secondset and 3rd and 3rd last to first like this.......
may be we will end up in minimum difference....
int[] array = { 5, 6, 10, 11, 12, 1, 2, 3 };
- kavita.123green October 06, 2012int lengthOfArray = array.length;
int begIndex = 0;
int endIndex = 0;
int searchElement = 10;//element need to be search
if (array[0] < array[lengthOfArray / 2]) {
if (searchElement <= array[lengthOfArray / 2]
&& searchElement >= array[0]) {
begIndex = 0;
endIndex = (lengthOfArray / 2) - 1;
} else if (searchElement <= array[0]) {
begIndex = lengthOfArray / 2;
endIndex = lengthOfArray - 1;
}
}
else {
if (searchElement >= array[lengthOfArray / 2]
&& searchElement <= array[0]) {
begIndex = (lengthOfArray / 2);
endIndex = lengthOfArray - 1;
} else if (searchElement >= array[lengthOfArray / 2]
&& searchElement >= array[0]) {
begIndex = 0;
endIndex = (lengthOfArray / 2);
}
}
for (int i = begIndex; i <= endIndex; i++) {
if (array[i] == searchElement) {
System.out.println(searchElement + " is at location :"
+ (i + 1));
break;
}
}