無聊寫篇博客冷靜一下。結束剛剛被數據結構支配的恐懼,還是虐虐冒泡排序玩玩
所謂冒泡排序,可以想象成,恩,沸騰的熱水。大的數慢慢往上冒,或者小的數慢慢往上冒,其實思想很簡單,每一次排序把你想要的最大的數放在序列最後,或者每一個排序把你想要的最小的數放在序列的最前面即可。
比如如下的一個序列:(按從小到大的序列安置泡所在的位置)
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;
}
}
}
}