一、冒泡算法
1、方式一
[c-sharp]
bubble_sort(int Array[],int Size)
{
int i,j,temp;
if(Array == NULL)
return -1;
for(i=0;i<Size-1;i++) {
for(j=0;j<Size-1-i;j++) {
if(Array[j]>Array[j+1]) {
temp = Array[j];
Array[j] = Array[j+1];
Array[j+1] = temp;
}
}
}
return 0;
}
2、方式二
int bubble_sort(int Array[], int size)
{
int i = size, j;
int temp;
if(Array == NULL)
return -1;
while(i-- > 0) {
for(j = 0; j < i - 1; j++) {
if(Array[j] > Array[j + 1]) {
temp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = temp;
}
}
}
return 0;
}
3、方式三
int bubble_sort(int Array[], int size)
{
int i = size, j;
int temp;
if(Array == NULL)
return -1;
for(i = size; i > 0; i--) {
for(j = 0; j < i - 1; j++) {
if(Array[j] > Array[j + 1]) {
temp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = temp;
}
}
}
return 0;
}
二、冒泡算法優化
在函數中定義一個bool 的變量 issorted ,在每趟對剩余的數字排序時,先把它設為true,然後當發生兩個兩個相鄰的數沒有按要求排時,在交換這兩個數的同時,把issorted設為false,不然就一直保持為true。
在進行好一趟排序之後,測試issorted這個變量的值,如果保持true,就說明已經排好序了,停止繼續排序,不然進行下一趟排序。
具體代碼:
[c-sharp]
void bubble_sort(int Array[], int Size)
{
int i,j,temp;
bool issorted;
for(i=0; i<Size-1; i++){
issorted = true;
for(j=0; j<Size-1-i; j++){
if(Array[j] > Array[j+1]){
temp = Array[j];
Array[j] = Array[j+1];
Array[j+1] = temp;
issorted = false;
}
}
if(issorted)
break;
}
}