Linux C++ 直接選擇排序,氣泡排序
阿新 • • 發佈:2018-12-24
選擇排序的思想是:每次從待排序中選擇最小(大)的元素插入已經排好的序列中。
/*直接選擇排序*/ #include <iostream> using namespace std; void swapp(int &a,int &b) { int temp = a; a = b; b = temp; } int main() { int a[]={5,4,10,20,12,3,2,1,3,5,6,56,43,32}; int size = sizeof(a)/sizeof(int); //計算陣列元素個數 for(int i=0;i<size-1;i++) { int last = i; for(int j=i+1;j<size;j++) //選擇後面最小元素 { if(a[j] < a[last]) { last = j; } } swapp(a[i],a[last]);//交換 } //輸出 for(int i=0;i<size;i++) { cout<<a[i]<<" "; } return 0; }
執行結果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
氣泡排序思想:比較相鄰連個元素大小,選擇最大(小)的排序
/*氣泡排序(for迴圈)*/ #include <iostream> using namespace std; void swapp(int &a,int &b) { int temp = a; a = b; b = temp; } int main() { int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32}; int size = sizeof(a)/sizeof(int);//計算陣列元素個數 //for迴圈 for(int i=0;i<size-1;i++) //遍歷各個元素 { for(int j=0; j<size-i; j++) //找出了最大(小)的一個 { if(a[j+1] < a[j]) swapp(a[j],a[j+1]); //交換最大(小)的一個 } } //輸出 for(int i=0; i<size; i++) { cout<<a[i]<<" "; } return 0; }
執行結果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*氣泡排序(while迴圈)*/ #include <iostream> using namespace std; void swapp(int &a,int &b) { int temp = a; a = b; b = temp; } int main() { int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32}; int size = sizeof(a)/sizeof(int);//計算陣列元素個數 //while迴圈 int loop = size-1;//最大迴圈次數 while(loop>0) // { int lastExchangeIndex = 0; //標記本次交換最後一對元素的最小小標 for(int i=0; i<loop; i++) { if(a[i+1] < a[i]) { swapp(a[i],a[i+1]); lastExchangeIndex = i; } } loop = lastExchangeIndex; //標記本次交換最後一對元素的最小小標 } //輸出 for(int i=0; i<size; i++) { cout<<a[i]<<" "; } return 0; }
執行結果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56