c/c++冒泡排序(BubbleSort)

冒泡排序的原理是,每執行一次循環,就會把最大的數放到右邊,例子中arr[]={2,1,6,3,8,4,9,5,7,0};總共十個數,第一次選擇最大的數需要比較9次,第二次在未排序的數中選擇最大的數則就需要8次了,因爲已經有一個數已經排好序了不需要再比較了,以此類推,比較7次,6次,,,,,

也就是說有兩個循環,一個外循環一個內循環,外循環每增加1次(每選出一個最大的數),則內循環比較次數就減少1次

所以循環體是這樣的:

for(i=0;i<n-1;i++)//外循環
	{
		for(j=0;j<n-i-1;j++)//內循環
		{
			if(a[j]>a[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
		
	}


以下是例子程序:

#include <stdio.h>
void BubbleSort(int *a,int n);
void main()
{
	int arr[]={2,1,6,3,8,4,9,5,7,0};
	BubbleSort(arr,10);
	int k;
	for(k=0;k<10;k++)
	{
		printf("%d",arr[k]);
	}
}

void BubbleSort(int *a,int n)
{
	int temp;
	int i;
	int j;
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(a[j]>a[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
		
	}
}


發佈了28 篇原創文章 · 獲贊 35 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章