데이터 구조 (4) 의 거품 정렬

7808 단어 데이터 구조
다음은 제 거품 정렬 코드 입 니 다.
 1 /*
 2     
 3 */
 4 
 5 #include <stdio.h>
 6 
 7 void main(){
 8    int array[2000];
 9    int numberCount;
10    int i;
11    int j;
12    int temp;
13    int flag;
14 
15    printf("           (   )     -9999        !

"); 16 for(i=0;i<2000;i++){ 17 scanf("%d",&array[i]); 18 if(array[i]==-9999){break;} 19 } 20 21 numberCount=i; 22 printf("

:%d !
",numberCount); 23 24 // , , , 25 for(i=0;i<numberCount;i++){ 26 flag=0; 27 for(j=numberCount-1;j>=i+1;j--){// j>=i+1 , 28 // 29 if(array[j]<array[j-1]){ 30 temp=array[j]; 31 array[j]=array[j-1]; 32 array[j-1]=temp; 33 flag=1; 34 } 35 } 36 if(flag==0){break;} 37 } 38 39 printf("



"); 40 for(i=0;i<numberCount;i++){ 41 printf("%d ",array[i]); 42 } 43 44 printf("



"); 45 for(i=numberCount-1;i>=0;i--){ 46 printf("%d ",array[i]); 47 } 48 49 printf("

"); 50 }

 
      거품 순 서 는 제 가 처음에 c 언어 를 배 웠 을 때 두 드 렸 지만 시간 이 지나 면 한꺼번에 해결 할 수 없습니다. 자연 언어 로 설명 하면 그 원리 도 쉽게 이해 할 수 있 습 니 다!다만 내부 의 거품 규칙 을 제어 할 때 외부 순환 제어 변 수 를 결합 시 켜 야 하 는 것 은 이해 하기 어렵 고 실수 하기 쉬 운 부분 입 니 다!그러나 전체적으로 그 원 리 를 이해 하고 몇 번 더 생각 하 는 것 이 비교적 성공 적 으로 거품 순 서 를 실현 하 는 것 입 니 다!
     다음은 보충 적 인 거품 정렬 의 기본 사상 이다. 인접 요소 간 의 비교 와 교환 을 통 해 키워드 가 작은 요 소 를 바닥 에서 위로 옮 기 고 물 아래 의 기포 처럼 점점 위로 거품 이 생 긴 다. 모든 거품 동작 은 정렬 해 야 할 서열 부분 을 순서 로 한다. 다음 에 거품 이 생 길 때 다시 질서 있 는 부분 을 확대 한다.전체 서열 이 질서 가 있 을 때 까지!
    거품 이 생기 는 현상 은 상상 하기 쉽 습 니 다. c 언어 로 전환 하 는 형식 에서 주의해 야 할 부분 은 코드 에서 도 밝 혀 졌 습 니 다. 이 코드 는 비교적 쉬 운 것 입 니 다. 물론 연습 도 해 야 합 니 다. 단숨에 하 는 것 도 쉽 지 않 습 니 다!

좋은 웹페이지 즐겨찾기