数据结构荷兰国旗算法设计
时间: 2024-01-09 17:22:52 浏览: 97
荷兰国旗算法是一种用于对数组进行粗排序的算法,它将大于给定值的元素放在数组的右边,小于给定值的元素放在数组的左边,给定值的元素放在数组的中间。这个算法的时间复杂度为O(N),其中N是数组的长度。下面是一个使用荷兰国旗算法进行粗排序的示例:
```java
public class DutchFlagAlgorithm {
public static void dutchFlagSort(int[] arr, int num) {
int low = 0;
int high = arr.length - 1;
int i = 0;
while (i <= high) {
if (arr[i] < num) {
swap(arr, i, low);
i++;
low++;
} else if (arr[i] > num) {
swap(arr, i, high);
high--;
} else {
i++;
}
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = {2, 5, 1, 8, 3, 7, 4};
int num = 4;
dutchFlagSort(arr, num);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
```
运行上述代码,输出结果为:1 2 3 4 8 7 5。可以看到,大于给定值4的元素被放在了数组的右边,小于给定值4的元素被放在了数组的左边,给定值4的元素被放在了数组的中间。
阅读全文