JAVA算法题

JAVA算法题,第1张

    //第一种方法

    public static void method1(int[] array) {

// 先排序

for (int i = 0 i < array.length i++) {

for (int j = i + 1 j < array.length j++) {

if(array[i] > array[j]) {

int c = array[i]

array[i] = array[j]

array[j] = c

}

}

}

// 第0位不变,2n位与2n-1位互换

for (int i = 2 i < array.length 宴者i += 2) {

int c = array[i]

array[i] = array[i - 1]

array[i - 1] = c

}

}

上面的方法先将数组排序,然后再把拆胡除0外的第2n位与2n-1位互换,这样可以保证奇数位的数总比两边的数字大,可以满足公式

//第二种方法

public static void method2(int[] array) {

// 直接按0,2,1,4,3,6,5,8,7...的顺序排序

for (int i = 0 i < array.length i = nextIndex(i)) {

for (int j = nextIndex(i) j < array.length j = nextIndex(j)) {

if(array[i] > array[j]) {

int c = array[i]

array[i] = array[j]

array[j] = c

}

}

}

}

public static int nextIndex(int i) {

return i == 0 ? i + 2 : (i % 2 == 0 ? i - 1 : i + 3)

}

第二种方法在排序时直接采用除0外的第2n位与2n-1位互换的顺序排序

public static void main(String[] args) {

int[] array = new int[] { 1, 5, 3, 4, 7, 5 }

method1(array)

for (int i = 0 i < array.length i++) {

System.out.print(i == 0 ? "" : ( i % 2 == 0 ? ">=" : "<="))

System.out.print(array[i])

}

}

结果:1<=4>=3<=5>=5<=7

虽然结果与例子不一样,但也能满足晌御薯公式需求

public class Monkey

{

public static void main(String[] args)

{

int sum=0,remain=1

//每天吃燃笑剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的闷段陪数量

for(int day=9day>=1day--)

{

sum=(remain+1)*2

remain=sum

System.out.println("第"+day+"天还剩"蚂蠢+remain+"个桃子")

}

System.out.println(sum)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12258748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存