解决方案 »

  1. 在调用bubblesort冒泡程序之前的输出是正确的,调用完成后再输出就全部为0了。
    检查过冒泡程序,是正确的。也就是在另外的程序中运行时 是能够正确的输出的。
      

  2. 你的冒泡是没错,可是你调用的是scheduler,不是bubblesort啊。。检查一下代码。没仔细看。
      

  3. 我还是无聊的跑了一遍,看看你变量m和k的大小,以及数组的大小,你就明白了。。你冒泡把初始为0 的元素都排前面去,而数组大小是12,m是5,k也是5。
      

  4. 我也无聊的跑了一下。。 for (int i = 0; i < n; i++) {  //n=11
    if (task[i] < 50) {
    system_task[m++] = task[i];
    } else if (task[i] >= 50 && task[i] <= 255) {
    user_task[k++] = task[i];
    } else {
    continue;
    }
    }

    for (int i : user_task) {
    System.out.println("user_task"+i);
    }

    for (int i : system_task) {
    System.out.println("system_task"+i);
    }

    System.out.println(m + "&" + k);我在你的System.out.println(m + "&" + k);这一句之前打印了一下你的数组。因为你的数组定义的是定长的,你除了放进的数之外,其余的都默认为0了,你排序从小到大,前面好多0,所以你只看到了前面的0.
      

  5. 已经帮卤煮修改好了,问题在于,在外部定义的全局变量过大
    int[]system_task =new int[n+1];
    int[] user_task =new int[n+1];
    而在函数中产生的循环值太小,排序完成后,
    这两个task中的前半部分值都是0.所以你按照那个循环值只能输出0,后面有值的部分还没循环到就结束了
    我只是采用了一个比较简单的方法,卤煮可以再想想,优化一下。package test;
    public class test{
    public static void main(String[] args) {
    int n;
    int task[] = {0,30,155,1,30,80,300,170,40,99, 80};
    n = task.length;
    //  int task[] = {0,30,155,80}; scheduler(task, n);
    } public static void scheduler(int[] task,int n){
                 //将数组task中的数按照范围的要求放在两个数组里面。
    int m = 0;
    int k = 0;
    for(int i=0;i<n;i++){
    if(task[i]<50){                                 
    m++;
    //system_task[m++] = task[i];
    }else if(task[i]>=50&&task[i]<=255){
    //user_task[k++] = task[i];
    k++;
    }else {
    continue;
    }
    }
    /*
     * 此处为新加内容
     * 
     */
    ///////////////////////////////////////////////
    int[]system_task = new int[m]; 
    int[] user_task = new int[k];
    System.out.println(m+"&"+k);
    for(int i=0,a=0,b=0;i<n;i++){
    if(task[i]<50){                                 
    system_task[a++] = task[i];
    }else if(task[i]>=50&&task[i]<=255){
    user_task[b++] = task[i];
    }else {
    continue;
    }
    }
    /////////////////////////////////////////////////
    for(int i=0;i<m;i++){
    System.out.print(system_task[i]+" ");//对数组进行处理完成后输出仍然是对的,但是当用冒泡完成后
                                                                                            //再输出就不对了。已经检查冒泡程序了,是对的。
    }
    System.out.println();
    for(int i=0;i<k;i++){
    System.out.print(user_task[i]+" ");
    }
    System.out.println();
    int[]system_task1 = bubblesort(system_task);
    int[] user_task1 = bubblesort(user_task);
    for(int i=0;i<m;i++){
    System.out.print(system_task1[i]+" ");
    }
    System.out.println();
    for(int i=0;i<k;i++){
    System.out.print(user_task1[i]+" ");
    }   //出问题了。
    System.out.println(); /*for(int i=0;i<n;i++){
    for(int i1=0;i1<m;i1++){
    if(system_task[i1]==task[i]){
    system_task[i1]=i;
    }
    }
    } for(int i=0;i<n;i++){
    for(int i1=0;i1<k;i1++){
    if(user_task[i1]==task[i]){
    user_task[i1]=i;
    }
    }
    }
    system_task[m++]=-1;
    user_task[k++]=-1; for(int i=0;i<m;i++){
    System.out.print(system_task[i]+" ");
    }
    System.out.println();
    for(int i=0;i<k;i++){
    System.out.print(user_task[i]+" ");
    }*/
    } public static int[] bubblesort(int[] a){
    for(int i=0;i<a.length-1;i++){
    for(int j=0;j<a.length-i-1;j++){
    if(a[j]>a[j+1]){
    int temp = a[j];
    a[j] = a[j+1];
    a[j+1] = temp;
    }
    }
    }
    return a;
    }
    }//////////////////TEST  result
    5&5
    0 30 1 30 40 
    155 80 170 99 80 
    0 1 30 30 40 
    80 80 99 155 170 
      

类似问题 »