算法问题冒泡插入和选择排序打印出来

问题描述

我在打印时遇到了问题。当我运行程序时,我得到了这个:

TEST PROBLEM: 10 
0
0
0
0
0
0
0
0
10

我目前只使用 readNumbers() 方法(我已经注释掉了其他方法)。我一直遇到一个问题,它进行比较和交换。但是,在排序后打印出来的数字如下所示。

File 1 contains: 10,1,2,3,4,5,6,7,8,9,10
file 2 contains: 10,10,1
file 3 contains: 10,4

我的代码:

import java.io.*;


   public class BubblesortA
    {
     public static void insertionSort (int [] data)
   {
  int comp=0;
  int swaps=0;

  int in,out,temp;

  for (out=1; out < data.length; out++)
  {
     temp = data[out];
     comp++;

     for (in=out; in > 0 && data[in-1] >= temp; in--)
     {
        data[in] = data[in-1];
        swaps++;
     }
     data[in] = temp;
  }

  System.out.println("Insertions sort comps: "+comp);
  System.out.println("Insertion sort swap: "+swaps);
  System.out.println();

}


   public static void selectSort (int [] data )
   {
  int in,min;
  int counter;
  int comparisons=0;
  int swaps=0;

  for (out=0; out < data.length-1; out++)
  {
     min = out;
     comparisons++;

     for (in = out+1; in < data.length; in++)
     {
        if (data[in] < data[min])
        {
           min = in; // new minimum

           swaps++;
        }
     }

     int tmp = data[out];     // swap items
     data[out] = data[min];   //
     data[min] = tmp;          //
    }

    System.out.println("Select sort Comp: "+comparisons);
    System.out.println("Select sort Swaps: "+swaps);
    System.out.println();





  }

  public static void generateRandom(int gty)
  {
     int counter;
     int [] fillArray = new int [gty];
     int random;


   for (counter=0; counter < fillArray.length; counter++)
  {
     random = (int) (Math.random() * 100+1);
     fillArray [counter]  = random;


  }

  bubbleSort(fillArray);
  selectSort(fillArray);
  insertionSort(fillArray);
}
   public static void readNumbers (String fileName)
 {
  int counter;
  int number;
  int  [] data = new int[fileName.length()];


  try
  {
     FileReader fr = new FileReader(fileName);
     BufferedReader br = new BufferedReader(fr);
     fileName = br.readLine();

     for(counter=0; counter < fileName.length(); counter++)
     {
        number = Integer.parseInt(fileName);
        data [counter] = number;

        System.out.println(" TEST PROBLEM: "+number+ " ");

        fileName = br.readLine();
     }
     br.close();
     fr.close();



     bubbleSort(data);



  }
  catch (IOException e)
  {
     System.out.println(e);
  }


 }
  public static void bubbleSort (int [] numbers)
 {
   int outter;
   int inner;
   int temp;
   int counter;
   boolean sorted = false;

   int comparisons=0;
   int swaps =0;


   while(!sorted)
   {
   for(outter=0; outter < numbers.length; outter++)
   {
     comparisons++;
     sorted = true;

     for (inner = 0; inner < numbers.length - 1 - outter; inner++)
     {
        if (numbers[inner] > numbers[inner + 1])
        {
           temp = numbers[inner];
           numbers[inner] = numbers[inner + 1];
           numbers[inner + 1] = temp;

           swaps++;
           sorted = false;
          }

       }
    }
  /**
     int hold = numbers.length -1;

     while (hold != 0 && sorted)
     {
        comparisons++;
        sorted = false;
        for (inner = 0; inner < hold; inner++)
        {
           if (numbers[inner] > numbers[inner + 1])
           {
              temp = numbers[inner];
              numbers[inner] = numbers[inner + 1];
              numbers[inner + 1] = temp;

              swaps++;
              sorted = true;
           }

        }


     }
   */


  }

  for(counter=0; counter < numbers.length; counter++)
  {
     System.out.println(numbers[counter]);
  }

  System.out.println();
  System.out.println("BubbleSort Comparsions: "+comparisons);
  System.out.println("BubbleSort Swaps: "+swaps);
  System.out.println();

 }

public static void main(String[] args) {

  int [] = {10,};
 
  String file1 = "File1.txt";
  String file2 = "File2.txt";
  String file3 = "File3.txt";


  //bubbleSort(data);

   readNumbers("File1.txt");
  //readNumbers("File2.txt");
  //readNumbers("File3.txt");
  //generateRandom(100);

   }//main
 }//class 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)