问题描述:
给定一个数组arr和一个数num,把数组中小于等于num的数放在数组的左边,大于num的数放在数组的右边。
解决思路:
定义一个指针作为左边区域的边界,从头开始遍历数组,符合小于等于num的条件,边界就加1,不符合就继续向下访问,遇到符合小于等于num的条件的数,就与边界的下一个数交换位置,边界加1。
Java代码:
public class left_right {
//小于等于num的放在数组左边,大于num的放右边
public static void zhengli(int[] arr, int num) {
int left = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] <= num) {
swap(arr, left, i);
left++;
}
}
}
//交换
public static void swap(int[] arr, int a, int b){
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//主方法
public static void main(String[] args){
int[] arr = {5,2,6,3,8,1,7,4};
int num = 5;
zhengli(arr, num);
System.out.println(Arrays.toString(arr));
}
}
以上内容为个人学习总结,如有错误,欢迎指正。