JavaScript 삽입 정렬 알고리즘 원리 및 구현 방법 예제

본 고의 실례 는 자 바스 크 립 트 삽입 정렬 알고리즘 의 원리 와 실현 방법 을 설명 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
1.정렬 프로필 삽입:
우리 가 지 주 를 두 고 줄 을 서 는 단 계 를 상상 하고 손 에 들 고 있 는 패 는 모두 어 릴 때 부터 큰 순서 로 정렬 된다.만약 에 카드 를 만 질 때마다 우 리 는 그 를 적당 한 위치 에 삽입 하여 뒤에 있 는 카드 보다 작고 앞 에 있 는 카드 보다 크 거나 똑 같 게 한다.
이와 같은 정렬 방법 은 정렬 을 삽입 하 는 것 이다.
한 배열 a 에서 우 리 는 오름차 순 서 를 실현 해 야 한다.만약 에 우리 가 앞에서 a[0]에서 a[k]까지 순 서 를 정 했다 고 가정 하면 지금 은 a[k+1]의 값 을 적당 한 위치 에 넣 어야 한다.
(간편 하기 위해 서 는 k 의 수치 범 위 를 토론 하지 않 고 배열 의 특정한 위 치 를 대표 합 니 다)
1.우선,우 리 는 a[k+1]의 값 을 a[k]와 비교 하고 a[k]보다 작 으 면 이들 의 값 을 교환 하고 똑 같 거나 크 면 교환 할 필요 가 없다.만약 에 교환 된다 고 가정 하면 현재 a[k]는 원래 a[k+1]의 값 을 저장 하고 새로운 a[k]의 값 은 앞 위치의 값 보다 작 을 수 있 기 때문에 a[k]와 a[k-1]를 다시 비교 해 야 한다.어떤 위치 a[p](p 는 0 에서 k 사이 수)의 값 이 a[p-1]의 값 보다 작 지 않 고 끝 날 때 까지 a[k+1]의 값 은 적당 한 위치 a[p]에 넣 었 습 니 다.또는 a[k+1]의 값 이 앞의 값 보다 작 습 니 다.한 걸음 씩 교환 한 후에 a[0]는 원래 a[k+1]의 값 을 저장 하면 끝 납 니 다.현재 a[0]에서 a[k+1]까지 는 질서 있 는 배열 입 니 다.
2.a[k+1]이후 a[k+2]부터 a[a.length-1]까지 모든 요 소 를 순서대로 똑 같이 조작 하여 질서 있 는 배열 을 얻 을 수 있 습 니 다.
2.JavaScript 삽입 정렬 실현

function insertion_sort(arr) {
  var temp;
  for (var i = 1; i < arr.length; i++) {
    for (var j = i-1; j >=0; j--) {
      if (arr[j+1]<arr[j]) {
        temp=arr[j+1];
        arr[j+1]=arr[j];
        arr[j]=temp;
      }else if (arr[j+1]>=arr[j]) {
        break;
      }
    }
  }
  return arr;
}
var a=[11,2,3,445,7,32,71,8,94];
console.log(insertion_sort(a));
var b=[94,11];
console.log(insertion_sort(b));

설명:
1.arr[j+1]의 값 이 앞의 값 보다 작 지 않 은 것 을 발견 하면 내부 순환 을 끝 낼 수 있 습 니 다break이 기능 을 실현 합 니 다.
2.내부 순환 용 arr[j+1]의 원인:초기 에 a[j](즉 a[i-1])는 a[i]의 이전 위 치 를 대표 하고 순환 에 들 어간 후에 a[j+1]는 a[i]의 위 치 를 나타 내 며 a[i]와 a[i-1]의 첫 번 째 비 교 를 실현 했다.j 가 처음으로 자감 함 에 따라 실제로 a[i-1]과 a[i-2]를 비교 했다.순서대로 유추 하 다.arr[j+1]을 a[i]로 바 꾸 면 안 됩 니 다.위치 이동 이 이 루어 지지 않 았 기 때 문 입 니 다.
상기 코드 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 합 니 다http://tools.jb51.net/code/HtmlJsRun테스트 실행 결 과 는 다음 과 같 습 니 다.

PS:정렬 에 관 한 프 리 젠 테 이 션 도 구 를 추천 합 니 다.참고 하 시기 바 랍 니 다.
온라인 애니메이션 프레젠테이션 삽입/선택/거품/병합/힐/빠 른 정렬 알고리즘 프로 세 스 도구:
http://tools.jb51.net/aideddesign/paixu_ys
더 많은 자 바스 크 립 트 관련 내용 에 관심 이 있 는 독 자 는 본 사이트 의 주 제 를 볼 수 있다.,,,,,,,,,,
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기