【算法】程序猿不写代码是不对的47

来源:互联网 发布:淘宝的畅淘卡怎么办理 编辑:程序博客网 时间:2024/06/05 20:45
package com.kingdz.algorithm.time201705;import java.util.Arrays;import java.util.Random;/** * 三色旗问题<br> * 红白蓝的三种旗子若干在绳子上随机排列,每次调换两个旗子,最后使得旗子按照蓝白红进行排列 *  * @author kingdz *  */public class Algo02 {public static void main(String[] args) {int[] number = new int[10];genNumber(number);System.out.println(Arrays.toString(number));sort(number);}/** * 排序三色旗 *  * @param number */private static void sort(int[] number) {int now = 0;int start = 0;while (now < 2) {for (int i = start; i < number.length; i++) {if (number[i] != now) {start = i;break;}}if (start == -1) {now = now + 1;continue;}int end = -1;for (int i = start + 1; i < number.length; i++) {if (number[i] == now) {end = i;break;}}if (end == -1) {now = now + 1;continue;}swap(number, start, end);System.out.println(Arrays.toString(number));}}/** * 交换start和end的位置 *  * @param number * @param start * @param end */private static void swap(int[] number, int start, int end) {int tmp = number[start];number[start] = number[end];number[end] = tmp;}/** * 生成随机的三色旗 *  * @param number */private static void genNumber(int[] number) {Random r = new Random(System.currentTimeMillis());for (int i = 0; i < number.length; i++) {number[i] = r.nextInt(3);}}}

0 0
原创粉丝点击