java实现-简单排序

喜欢的排序方法:

1.选择排序

•思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。
•关键问题:在剩余的待排序记录序列中找到最小关键码记录。
•方法:
–直接选择排序
–堆排序
 
①简单的选择排序
  1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
  
  2、实例 初始状态 57 68 59 52
a。最小52 ,与第一交换 52  68  59 57
b。 最小 57  与第二个交换 52 57 59 68
c。最小59 不用交换 52 57 59 68
 
代码
package com.sort;
 
//不稳定
public class 简单的选择排序 {
 
    public static void main(String[] args) {
        int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1,8};
        System.out.println("排序之前:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
        //简单的选择排序
        for (int i = 0; i < a.length; i++) {
            int min = a[i];
            int n=i; //最小数的索引
            for(int j=i+1;j<a.length;j++){
                if(a[j]<min){  //找出最小的数
                    min = a[j];
                    n = j;
                }
            }
            a[n] = a[i];
            a[i] = min;
            
        }
        System.out.println();
        System.out.println("排序之后:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
    }
 
}
2。 交换排序

①冒泡排序

  1、基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

  2、实例初始状态 57 68 59 52

a。 57 68 【59 52】 -》57 【68 52】 59 -》【57 52】 68 59 ->52 57 68 59

b. 52 57 [68 59] ->52 57 59 68

 

java shixian

package com.sort;

 

//稳定

public class 冒泡排序 {

    public static void main(String[] args) {

        int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1,8};

        System.out.println("排序之前:");

        for (int i = 0; i < a.length; i++) {

            System.out.print(a[i]+" ");

        }

        //冒泡排序

        for (int i = 0; i < a.length; i++) {

            for(int j = 0; j<a.length-i-1; j++){

                //这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了

                if(a[j]>a[j+1]){

                    int temp = a[j];

                    a[j] = a[j+1];

                    a[j+1] = temp;

                }

            }

        }

        System.out.println();

        System.out.println("排序之后:");

        for (int i = 0; i < a.length; i++) {

            System.out.print(a[i]+" ");

        }

    }

}

 
 

冒泡排序是一种稳定的排序方法。 

•若文件初状为正序,则一趟起泡就可完成排序,排序码的比较次数为n-1,且没有记录移动,时间复杂度是O(n)
•若文件初态为逆序,则需要n-1趟起泡,每趟进行n-i次排序码的比较,且每次比较都移动三次,比较和移动次数均达到最大值∶O(n2)
•起泡排序平均时间复杂度为O(n2)
yuan:http://www.cnblogs.com/liuling/p/2013-7-24-01.html

猜你喜欢

转载自km-moon11.iteye.com/blog/2187294