직접 삽입 정렬 알고리즘 상세 설명

정렬 알고리즘 을 직접 삽입 하 는 것 은 도대체 어떤 상황 입 니까?우 리 는 '직접' 이라는 두 글 자 를 보고 이 알고리즘 이 우리 가 삽입 한 위 치 를 먼저 얻 은 다음 에 바로 삽입 되 어야 한 다 는 것 을 설명 했다. 비교 과정 없 이 삽입 되 었 다.
그러면 정렬 알고리즘 을 직접 삽입 하 는 본질은 무엇 입 니까? 예 를 들 어 우 리 는 질서 있 는 배열 이 있 습 니 다. 1, 2, 3, 4, 5, 6, 8 을 현재 배열 에 삽입 하려 면 우리 가 삽입 한 위 치 를 찾 아야 합 니 다. 여기 의 위 치 는 데이터 6 의 뒤에 있 습 니 다. 이 6 데이터 의 색인 5 이기 때문에 우리 의 삽입 위 치 는 색인 이 6 입 니 다.
일상생활 에서 이러한 정렬 문제 에 자주 부 딪 힌 다. 새로운 데 이 터 를 이미 배 열 된 데이터 열 에 삽입 하 는 것 이다.예 를 들 어 어 어 렸 을 때 부터 정렬 된 데이터 열 {1, 2, 3, 4, 5, 6, 7, 9, 10} 은 보통 서열 이 라 고 부 릅 니 다. 우 리 는 번호 1, 2, 3 으로 데이터 의 위 치 를 표시 하고 새로운 데이터 8 을 상기 서열 에 삽입 하려 고 합 니 다.
이 일 을 완성 하 는 절차:
① 데이터 확인 '8' 기 존 시퀀스 에서 차지 해 야 할 위치 번호.데이터 '8' 이 있 는 위 치 는 이 위치 오른쪽 보다 작 거나 같은 모든 데 이 터 를 만족 시 켜 야 한다. 왼쪽 위치 에 있 는 모든 데이터 보다 크다.
② 이 위 치 를 비우 고 데이터 '8' 을 삽입 합 니 다.
정렬 (straight insertion sort) 을 직접 삽입 하 는 방법 은:
매번 무질서 표 에서 첫 번 째 요 소 를 꺼 내 질서 표 의 적당 한 위치 에 삽입 하여 질서 표를 질서 있 게 합 니 다.
//        iArray          n        
void insertSort(int iArray[], int n)
{
      //             
      //                           
      //                    
      for(int i = 1; i < n; i++)
      {
           //                 
           int tempNeedInsert = i;
           //                    
           for(int j = i - 1; j >= 0; j--)
           {
                //     i                             
                if(iArry[j] > iArray[i])
                {
                    //                            
                    iArray[j + 1] = iArray[j];               
                }else
                {
                    //                       
                    //                  
                    //             
                    break;
                }
           }

           //                           
           //         
           iArray[j + 1] = iArray[i];
      }
}

int main()
{
    int iArray[5] = { 5,4,3,2,1 };

    insertion_sort(iArray, 5);

    for (int i = 0; i < 5; i++)
    {
        std::cout << iArray[i] << std::endl;
    }
    return 0;
}

좋은 웹페이지 즐겨찾기