本帖最后由 棉/mg花/x糖 于 2013-5-27 18:33 编辑
数据结构:用数组实现选择排序算法(已优化)
注意:算法优化不是很理想,希望哪位大神能继续帮着优化!!谢谢^_^
程序源码如下:- package com.yb.ArrayAndString;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class SelectSort {
- static int count = 0;
- static void selectSort(int arr[]) { //选择排序方法
- int k,temp,flag = 0;
- int len = arr.length;
- for(int i = 0; i < len-1; i++) {
- flag = 0;
- k = i;
- for(int j = i+1; j < len; j++) {
- if(arr[j] < arr[k]) {
- k = j;
- }
- }
- if(k > i) {
- temp = arr[i];
- arr[i] = arr[k];
- arr[k]= temp;
- flag = 1;
- }
- if(flag == 1) count++;
- }
- }
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
- String ch;
- int arr[] = new int[8];
- int len = arr.length;
- System.out.println("请从键盘输入8个整数,一行只输入一个数:");
- for(int i = 0; i < len; i++) {
- ch = keyin.readLine(); //用于读取一个字符串
- arr[i] = Integer.parseInt(ch); //将字符串类型ch转换成整数类型
- }
-
- //打印原始数据
- System.out.println("原始数据:");
- for(int i = 0; i < len; i++) {
- System.out.print(" "+arr[i]);
- }
- System.out.println("\n");
- //int len = arr.length;
- SelectSort.selectSort(arr); //数组名作为成员方法的实参
- System.out.print("选择法排序的结果:");
- System.out.println("length = "+arr.length);
- for(int i = 0; i < len; i++) {
- System.out.print(" "+arr[i]); //数组arr的值已在方法调用中改变了
- }
- System.out.println("\n");
- System.out.println("排序趟数:"+count);
- }
- }
复制代码 运行结果:
|