关于冒泡排序算法呢,是比较简单的排序算法,基本上初学者刚刚接触C语言的时候都会实现,狂补算法,从最简单的开始。
以下是java的实现版本:
package sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Bubble1 {
/**
* @param args 冒泡排序
* @return
* @throws IOException
*/
static int bubble() throws IOException{
int x=0;
int[] src=new int[x];
//输入数组的长度
System.out.println("请输入数组的长度: ");
BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
x=Integer.parseInt(bu.readLine());
// System.out.println(x);
return x;
}
static void bubblesort(int[] a ) throws NumberFormatException, IOException{
int temp = 0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
for(int j=0;j<a.length;j++)
{
System.out.println("请输入第"+(j+1)+"个数");
a[j]=Integer.parseInt(br.readLine());
}
for (int i = a.length - 1; i > 0; --i)
{
for (int j = 0; j < i; ++j)
{
if (a[j + 1] < a[j])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
System.out.print("冒泡排序结果:");
for(int m=0;m<a.length;m++)
{
System.out.print(" "+a[m]);
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int m=bubble();
int[] a=new int[m];
bubblesort(a);
}
}
补一下java.io中API文档对BufferedReader的介绍:
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。