public static int[] sort_sagezk2(int[] nums) {
final int LEN = nums.length;
int i, j, t, p;
int[] temp = new int[LEN];
for (i = 0; i < LEN;) {
temp[nums[i++]]++;
}
for (i = 0, p = 0; i < LEN; ++i) {
if ((t = temp[i]) == 0)
continue;
for (j = 0; j < t; ++j) {
nums[p++] = i;
}
}
return nums;
}
这是刚才在一个精华帖里看到的<【竞赛】排序算法的最快实现-继续>,有人能帮我解释下这程序吗?里面的temp[nums[i++]]++;是什么意思啊?temp的大小不是LEN吗?它的标号用另一个数组的值那是不很容易越界?谢谢了.
final int LEN = nums.length;
int i, j, t, p;
int[] temp = new int[LEN];
for (i = 0; i < LEN;) {
temp[nums[i++]]++;
}
for (i = 0, p = 0; i < LEN; ++i) {
if ((t = temp[i]) == 0)
continue;
for (j = 0; j < t; ++j) {
nums[p++] = i;
}
}
return nums;
}
这是刚才在一个精华帖里看到的<【竞赛】排序算法的最快实现-继续>,有人能帮我解释下这程序吗?里面的temp[nums[i++]]++;是什么意思啊?temp的大小不是LEN吗?它的标号用另一个数组的值那是不很容易越界?谢谢了.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货