직접 삽입 정렬 알고리즘 상세 설명
3696 단어 데이터 구조 와 알고리즘
그러면 정렬 알고리즘 을 직접 삽입 하 는 본질은 무엇 입 니까? 예 를 들 어 우 리 는 질서 있 는 배열 이 있 습 니 다. 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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JAVA] 배열 회전 출력요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오. 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다. 각 방향의 시작 위치 와 좌표 의 관 계 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.