java 默认排序方式_自定义排序 按照给定排序规则排序 规则没给出的按默认排序...

[java]代码库/**

* 按照给定排序规则排序,规则没给出的按默认排序。

*/

public class DiySort {

public static void main(String[] args) {

// 待排序数组 w1 b1 Bb Ba 5f 6G kk 1p UG 8y

char arr[] = { 'w', '1', 'b', '1', 'B', 'b', 'B', 'a', '5', 'f', '6',

'G', 'k', 'k', '1', 'p', 'U', 'G', '8', 'y' };

// 排序规则 j

char rule[] = { 'j', 'a', 'G', 'g', '8', 'r', 'D', 'f', 'U', 'b', 'W' };

int[] p = new int[arr.length]; // arr排序后,每个字符在规则rule中的位置,-1表示默认规则

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

p[i] = -1;

}

// 临时变量

char tmp_char;

int tmp_int;

// arr排序

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

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

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

char temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

// 分别找到arr中每个字符在rule中的位置

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

for (int j = 0; j < rule.length; j++) {

if (arr[i] == rule[j]) {

p[i] = j;

}

}

}

// 按照给定规则rule排序

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

if (p[i] == -1) {

continue;

}

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

if (p[j] == -1) {

continue;

}

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

tmp_char = arr[i];

arr[i] = arr[j];

arr[j] = tmp_char;

tmp_int = p[i];

p[i] = p[j];

p[j] = tmp_int;

}

}

}

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

System.out.print(arr[i]);

}

}

}

694748ed64b9390909c0d88230893790.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值