선택 정렬, 삽입 정렬

순서

  • 이 문제를 해결하기 위해 주위에 전반적으로 분류 정수의 혼란 배열을 다음과
  • 오름차순 정렬 방법
  • 정렬되지 않은 정수 배열 []
나는 0 1 4 5
일체 포함] 1 5 4 0

선택 정렬

원칙

  • 마다 디지털 스위칭 부 및 제 1 위치, 및 다수의 제 1 부분의 위치로의 정렬되지 않은 작은 수의 모든 정렬 된 배열 함유 품번까지 등등 정렬 및
  • 주문 과정의 일부가 강조 표시 한 바와 같이
  • 정렬되지 않은 부분을 시작합니다
나는 0 1 4 5
일체 포함] 1 5 4 0
  • 디지털 정렬 부에 낮은 번호 (0)과 제 1 위치 (2) 과거의 수, 및 제 1 위치의 부 정렬되지
나는 == 0 == 1 4 5
일체 포함] == 0 == 1 5 4
  • 작은 디지털 숫자 부 (1)와 부분적으로 정렬 된 제 1 위치 (3) 교환과 정렬되지 않은 디지털 첫번째 위치
나는 == 0 == == 1 == 4 5
일체 포함] == 0 == == 1 == 5 4
  • 작은 디지털 숫자 부 (2)와 부분적으로 정렬 된 제 1 위치 (3) 교환과 정렬되지 않은 디지털 첫번째 위치
나는 == 0 == == 1 == == 2 == 4 5
일체 포함] == 0 == == 1 == == 2 == 5 4
  • 작은 디지털 숫자 부 (3)와 부분적으로 정렬 된 제 1 위치 (5) 교환 및 정렬되지 않은 디지털 첫번째 위치
나는 == 0 == == 1 == == 2 == == 3 == 4 5
일체 포함] == 0 == == 1 == == 2 == == 3 == 4 5
  • 작은 디지털 숫자 부 (4)와 부분적으로 정렬 된 제 1 위치 (4) 교환 및 정렬되지 않은 디지털 첫번째 위치
나는 == 0 == == 1 == == 2 == == 3 == == 4 == 5
일체 포함] == 0 == == 1 == == 2 == == 3 == == 4 == 5
  • 작은 디지털 숫자 부 (5)와 부분적으로 정렬 된 제 1 위치 (5) 교환 및 정렬되지 않은 디지털 첫번째 위치
나는 == 0 == == 1 == == 2 == == 3 == == 4 == == 5 ==
일체 포함] == 0 == == 1 == == 2 == == 3 == == 4 == == 5 ==

자바로 코드

public class Sort {
    static public void selectSort(int[] a){//传入一个数组
       for(int i=0;i<a.length;i++){
           int min=i,temp;//min是未排序部分最小值的下标,初始是a[i]
           for(int j=i+1;j<a.length;j++)//从未排序部分开始找最小值的下标
               if(a[j]<a[min])
                   min=j;
           temp=a[i];//将未排序部分中最小值放到未排序部分的第一个位置,转换为排序部分
           a[i]=a[min];
           a[min]=temp;
       }
    }
}

삽입 정렬

원칙

  • 만약 적절한 위치를 찾아 낼 때까지, 가장 낮은 위치에 높은 위치로부터 차례로 비교하여, 부분적으로 정렬 된 순서대로마다 첫 번째 숫자의 정렬되지 않은 부분은 위 부분에 포함
  • 주문 과정의 일부가 강조 표시 한 바와 같이
  • 정렬되지 않은 부분을 시작합니다
나는 0 1 4 5
일체 포함] 1 5 4 0
  • 디지털 부품 주문을 통합 분류되지 않은 부분은.이 단계는 일반적으로 가장 좋은 시작 작동하지 않습니다
나는 == 0 == 1 4 5
일체 포함] == 2 == 1 5 4 0
  • 정렬 부에 제 번호 (3)의 정렬되지 않은 부분.
나는 == 0 == == 1 == 4 5
일체 포함] == 2 == == 3 == 1 5 4 0
  • 정렬 부에 (1) 분류되지 않은 부품 자리.
나는 == 0 == == 1 == == 2 == 4 5
일체 포함] == 1 == == 2 == == 3 == 5 4 0
  • 디지털 부 (5)가 정렬되지 않은 정렬 부를 포함된다.
나는 == 0 == == 1 == == 2 == == 3 == 4 5
일체 포함] == 1 == == 2 == == 3 == == 5 == 4 0
  • 디지털 부 (5)가 정렬되지 않은 정렬 부를 포함된다.
나는 == 0 == == 1 == == 2 == == 3 == == 4 == 5
일체 포함] == 1 == == 2 == == 3 == == 4 == == 5 == 0
  • 디지털 부 (5)가 정렬되지 않은 정렬 부를 포함된다.
나는 == 0 == == 1 == == 2 == == 3 == == 4 == == 5 ==
일체 포함] == 0 == == 1 == == 2 == == 3 == == 4 == == 5 ==

자바로 코드

public class Sort {
    static public void insertSort(int[] a){
        for(int i=1;i<a.length;i++){//由于未排序第一个数字不用插入,所以直接从下标为1的位置开始
            int temp=a[i];//拷贝未排序部分的第一个数字
            int j;//记录最后未排序部分第一个数字的落点
            for(j=i-1;j>-1;j--){//由于插入第i个,那么已排序部分最高位下标就是i-1,从大到小比较
                if(a[j]>temp)//如果这个数比未排序部分第一个数字大,那么这个数字后移一位,第一个数字已经拷贝,所以不用担心覆盖(这是一种优化)
                    a[j+1]=a[j];//后移
                else break;//不然位置合适就跳出循环
            }
            a[j+1]=temp;//将未排序部分第一个数字放到合适的位置
        }
    }
}

힐 정렬 (쉘 정렬)

원칙

  • 여러 개의 서브 시퀀스들로 분할되어 기록되는 전체 첫 번째 행에 직접 삽입 정렬 시퀀스 전체 시퀀스는 "실질적으로 정렬 된"직접 삽입 정렬의 모든 기록 될
  • 구성은 간단한 부재 와이즈 분할 시퀀스 아니지만, 레코드는 서브 - 시퀀스를 형성하는 단위로 구분한다. 선택은 중요 증가시킨다.
  • 다른 힐이 경우 더 삽입 정렬에 정렬 및 델타 서브 시퀀스 사이에, 1보다 큰 경우, 전체 시퀀스가되어 있기 때문에, 삽입 정렬되어, 일단 최종 정렬 삽입 점프를 지시 "실질적으로 정렬 된" 힐 삽입 정렬보다 더 나은 정렬 왜 빨리, 이는

  • 以下示例增量为1,3,5
  • 插入第一个数字无需调整,仔细观察每趟排序,从第增量个数字开始,每个数字都需要插入操作,当然是在同一增量序列中
  • 优先进行增量大的序列

希尔排序

Code by java

  • 这里取增量为1,4,13...(3*n+1)
static public void shellSort(int[] a){
        int h=1;
        while (h<a.length/3)
            h=h*3+1;//求出最大增量
        while (h>0){//增量大于零
           for(int i=h;i<a.length;i+=h){//每次将以增量为下标位置开始的数字往前插入到数组中,插入必须在同一增量序列中
                int temp=a[i];
                int j;
                for(j=i-h;j>-1;j-=h){
                    if(a[j]>temp)
                        a[j+h]=a[j];
                    else break;
                }
                a[j+h]=temp;
           }
           h/=3;//增量改变为较小的增量
        }
    }

추천

출처www.cnblogs.com/redo19990701/p/11282494.html