數據結構之冒泡排序

無聊寫篇博客冷靜一下。結束剛剛被數據結構支配的恐懼,還是虐虐冒泡排序玩玩

所謂冒泡排序,可以想象成,恩,沸騰的熱水。大的數慢慢往上冒,或者小的數慢慢往上冒,其實思想很簡單,每一次排序把你想要的最大的數放在序列最後,或者每一個排序把你想要的最小的數放在序列的最前面即可。

比如如下的一個序列:(按從小到大的序列安置泡所在的位置)

68,45,23,37,54,12,81,76

第一次冒:

68,45,23,37,54,81,76,12

第二次冒:

68,45,37,54,81,76,23,12

....

第七次冒:

12,23,37,45,54,68,76,81

OK 排序完畢


需注意的幾個點

1.總共8個數,每次排序將最大的數放在最後,7次排序就將所有數排序完畢

2.已經有序的數字可以不加入比較

3.若一個序列從某個位置開始一直到最後已經有序,則不需要進行比較工作了!


代碼(c++):

//學的數據結構,用下數據結構咯

#define MAXSIZE 20

typedef int KeyType;

typedef struct{
KeyType key[MAXSIZE+1]; //說白了就是一個整型數組。
int length; //key數組的長度
}SqList; //該數組的一號單元沒有賦值哦

void BubbleSort(SqList *list){		//千年老冒泡
	int i,j,temp;
	bool nice=false;
	for(i=2;i<=list->length && !nice;i++){
		nice=true;
		for(j=1;j<=list->length-i+1;j++){<span style="white-space:pre">	</span>
			if(list->key[j]>list->key[j+1]){<span style="white-space:pre">	</span>//若循環中一次都沒有進行比較,那該序列肯定有序咯,那肯定nice
				temp=list->key[j];
				list->key[j]=list->key[j+1];
				list->key[j+1]=temp;
				nice=false;
			}
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章