排序2--选择(蛮力法)

来源:互联网 发布:aim聊天软件申请 编辑:程序博客网 时间:2024/04/28 22:45
public class DataFactory {public static int[] produceData(int num) {int data[] = new int[num];for (int i = 0; i < num; i++) {data[i] = (int) (Math.random() * (num * 10));System.out.print(data[i] + " ");}System.out.println();return data;}}
public interface Sort {void sort(int[] data);}
public class SelectionSort implements Sort {@Overridepublic void sort(int[] data) {int tmp;int n = data.length;for (int i = 0; i <= n - 2; i++) {for (int j = i+1; j <= n-1; j++) {if (data[j] < data[i]) {tmp = data[i];data[i] = data[j];data[j] = tmp;}}}}}
public class Test {public static void main(String[] args) {int data[] = DataFactory.produceData(20);Sort sort = new SelectionSort();sort.sort(data);for (int x : data) {System.out.print(x + " ");}}}
选择排序和冒泡排序相似,只是比较和交换的对象不同。最坏情况同样是是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。对于n位的数列则有比较次数为(n-1)+(n-2)+...+1=n*(n-1)/2,这就得到了最大的比较次数,所以其时间复杂度也为O(n的平方)
原创粉丝点击