버블 정렬(BubbleSort)의 기본 개념은 인접한 두 숫자를 순서대로 비교하여 앞에 소수점을, 뒤에 큰 숫자를 넣는 것입니다. 즉, 첫 번째 단계에서는 먼저 첫 번째 숫자와 두 번째 숫자를 비교하고 소수를 먼저 배치하고 큰 숫자를 마지막에 배치합니다. 그런 다음 두 번째 숫자와 세 번째 숫자를 비교하고 소수를 앞에 놓고 큰 숫자를 뒤에 놓고 마지막 두 숫자를 비교할 때까지 이렇게 계속하여 소수를 앞에 놓고 큰 숫자를 뒤에 넣습니다. 이것이 첫 번째 여행의 끝이며, 끝에 가장 큰 숫자가 남습니다. 두 번째 단계에서는 여전히 첫 번째 숫자 쌍에서 비교를 시작합니다(두 번째 숫자와 세 번째 숫자의 교환으로 인해 첫 번째 숫자가 더 이상 두 번째 숫자보다 작지 않기 때문일 수 있음). 소수점을 먼저 입력합니다. , 그리고 큰 숫자를 배치한 후 두 번째에서 마지막 숫자까지 비교가 계속됩니다(첫 번째에서 마지막 위치가 이미 가장 큰 숫자임). 두 번째 패스가 끝나면 두 번째에서 마지막까지 새로운 최대 숫자가 얻어집니다. 위치(실제로는 전체 시퀀스에서 두 번째로 큰 숫자입니다). 이렇게 계속해서 정렬이 최종적으로 완료될 때까지 위의 과정을 반복하세요.
c 코드는 다음과 같이 구현됩니다.
#include <stdio.h> //打印数组 void display(int array[],int size){ printf("the array is:"); int i; for(i=0;i<size;i++){ printf("%d ",array[i]); } printf("\n"); } //冒泡排序算法 void sort(int array[],int size){ int i,j,temp,flag; for(i=0;i<size;i++){ flag = 0; for(j=size-1;j>i;j--){ //如果前一个数大于后一个数,则交换 if(array[j-1]>array[j]){ temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = 1; } } //如果本次排序没有进行一次交换,则break,减少了执行之间。 if(flag == 0){ break; } display(array,size); } } int main(void){ int array[10]={34,45,1,39,21,68,65,100,4,51}; display(array,10); sort(array,10); return 0; }
더 많은 정렬 및 버블 정렬 관련 기사를 보려면 다음을 참조하세요. PHP 중국어 웹사이트를 팔로우하세요!