现在用下面的简单排序算法进行排序,我现在想在排序过程中把相等的值启示Index值和结束Index值记录下来供二次排序,大侠帮忙改改下面的代码吧!其他的排序方法也可。想实现的结果:
排序前:10,5,4,8,6,8,8,12
排序后:4, 5, 6,8, 8, 8,10, 12
想在排完序后知道那三个8的index值范围(3 ~ 5)private static void SimpleSelectSort(int[]nums){
for(int i = 0; i < nums.length; i++){//外层扫面控制
int min = i;//用来记录值最小的下标,默认假设第数组第一个元素为最小。
for(int j = i; j < nums.length ; j++){
if(nums[j] < nums[min]){//找出逼min下标中元素还小的值的下标
min = j;//保持min始终为最小元素的小标
}
}
if(i!=min){//一趟扫描结束后判断是否找出了最小的值,如果有的话就交换,将这个最小值移动到此次扫描数据的最前端
int temp = nums[i];
nums[i] = nums[min];
nums[min] = temp;
}
}
}
排序前:10,5,4,8,6,8,8,12
排序后:4, 5, 6,8, 8, 8,10, 12
想在排完序后知道那三个8的index值范围(3 ~ 5)private static void SimpleSelectSort(int[]nums){
for(int i = 0; i < nums.length; i++){//外层扫面控制
int min = i;//用来记录值最小的下标,默认假设第数组第一个元素为最小。
for(int j = i; j < nums.length ; j++){
if(nums[j] < nums[min]){//找出逼min下标中元素还小的值的下标
min = j;//保持min始终为最小元素的小标
}
}
if(i!=min){//一趟扫描结束后判断是否找出了最小的值,如果有的话就交换,将这个最小值移动到此次扫描数据的最前端
int temp = nums[i];
nums[i] = nums[min];
nums[min] = temp;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货