-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinimum_swaps_Algorithm.txt
More file actions
115 lines (79 loc) · 2.43 KB
/
Copy pathMinimum_swaps_Algorithm.txt
File metadata and controls
115 lines (79 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
You are given an unordered array consisting of consecutive integers [1, 2, 3, ..., n] without any duplicates. You are allowed to swap any two elements. Find the minimum number of swaps required to sort the array in ascending order.
Example
Perform the following steps:
i arr swap (indices)
0 [7, 1, 3, 2, 4, 5, 6] swap (0,3)
1 [2, 1, 3, 7, 4, 5, 6] swap (0,1)
2 [1, 2, 3, 7, 4, 5, 6] swap (3,4)
3 [1, 2, 3, 4, 7, 5, 6] swap (4,5)
4 [1, 2, 3, 4, 5, 7, 6] swap (5,6)
5 [1, 2, 3, 4, 5, 6, 7]
It took swaps to sort the array.
Function Description
Complete the function minimumSwaps in the editor below.
minimumSwaps has the following parameter(s):
int arr[n]: an unordered array of integers
Returns
int: the minimum number of swaps to sort the array
Input Format
The first line contains an integer, , the size of .
The second line contains space-separated integers .
Constraints
Sample Input 0
4
4 3 1 2
Sample Output 0
3
Explanation 0
Given array
After swapping we get
After swapping we get
After swapping we get
So, we need a minimum of swaps to sort the array in ascending order.
Sample Input 1
5
2 3 4 1 5
Sample Output 1
3
Explanation 1
Given array
After swapping we get
After swapping we get
After swapping we get
So, we need a minimum of swaps to sort the array in ascending order.
Sample Input 2
7
1 3 5 2 4 6 7
Sample Output 2
3
Explanation 2
Given array
After swapping we get
After swapping we get
After swapping we get
So, we need a minimum of swaps to sort the array in ascending order.
//MOST IMP: WATCH YT VIDEO FOR THE ALGO
static int minimumSwaps(int[] arr) {
int[][] a = new int[arr.length][2];
boolean[] c = new boolean[arr.length+1];
for(int i=0; i<arr.length; i++){
a[i][0] = i;
a[i][1] = arr[i]-1;
}
int swap = 0;
for(int i=0; i<arr.length; i++){
if(c[i]==false)
c[i] = true;
if(a[i][0]==a[i][1])
continue;
else{
int k = a[i][1];
while(c[k]==false){
c[k] = true;
k = a[k][1];
swap++;
}
}
}
return swap;
}