java实现直接选择排序

来源:互联网 发布:淘宝联盟链接有效期 编辑:程序博客网 时间:2024/05/16 12:44

          数据结构中,有很多排序算法,学数据结构的时候没有用心弄明白,只能现在自己来弄清楚了,我一个一个来,这次是直接选择排序,排序思想:

1.首先,将第一个数作为最小值(从小到大的顺序),然后与第二个数比较,如果大于第二个数,这交换这两个数值,然后继续让第一个数与第三个数比较,以此类推;如果是把第一个数作为最大值的话(从大到小的顺序),与第二个数比较,如果小于第二个数,这交换这两个数值,再与第三个比较,以此类推;

2.每一轮都会把最大值或者最小值放到最左边,直到排序完成。

下面是算法代码:

package dataStructures;/**  * 类说明  * @author jiang * @date 创建时间:2014年10月6日 上午10:32:29  */public class DirectSelectionSort {//实现直接选择排序算法//按从小到大的顺序排序并输出public void directSelectionSort(int str[]){int min = 0;        //定义一个最小值变量,用来做交换时的中间变量for (int i = 0; i < str.length-1; i++) {   //注意这里数组索引越界min = str[i];for (int j = i+1; j < str.length; j++) {   //每一次循环都把最小的数与str[i]交换if (str[i]>str[j]) {min = str[j];str[j] = str[i];str[i] = min;}}}}public static void main(String[] args){int str[] = {25,12,15,3,56,8,98,552};  //初始化一个数组System.out.println("排序前:");for (int i = 0; i < str.length; i++) {System.out.print(str[i]+" ");}DirectSelectionSort sls = new DirectSelectionSort();sls.directSelectionSort(str);          //进行排序System.out.println();System.out.println("排序后:");for (int i = 0; i < str.length; i++) {System.out.print(str[i]+" ");      //排序后输出}}}
运行结果:

排序前:
25 12 15 3 56 8 98 552 
排序后:
3 8 12 15 25 56 98 552 

时间复杂度:o(n^2)

空间复杂度:o(1)

稳定性:不稳定


0 0