思路分析:
依次比較相鄰的兩個數
將比較小的數放在前面,比較大的數放在後面
第一趟比較完後,最小的數放在第一位;那麼在第二趟的時候不需要再對第一位數進行比較
依次類推,每一趟比較次數依次減小
c++**實現:
思路分析:#include
using
namespace std;
void
show
(int arr,
int n)
cout<
}void
bubblesort
(int arr,
int n)}}
}int
main()
; cout<<
"初始:"
;show
(s,10);
bubblesort
(s,10
);
cout<<
"排序後:"
;show
(s,10);
system
("pause");
}
假設第乙個元素最小,記為min;遍歷序列,將其他元素依次與min比較,每當有元素小於min,就將其與第一位進行位置互換
第二次遍歷的時候就不需要再對第一位進行比較了
依次類推,每次比較的次數依次減小
c++**實現:
#include
using
namespace std;
void
show
(int a,
int n)
cout<
}void
selectsort
(int a,
int len)}}
}int
main()
; cout<<
"初始:"
;show
(a,10);
selectsort
(a,10
);
cout<<
"排序:"
思路分析:
將整個序列看作有序序列
和無序序列
無非是將無序序列的首元素插入進有序序列,(將插入位置以後的元素進行後移,如果待插入的元素與有序序列中某個元素相等,則將待插入元素插入到相等元素的後面)
c++**實現:
#include
using
namespace std;
//插入排序
void
insertionsort
(int a,
int size)
a[pre+1]
=temp;
//如果大於則直接插入 }}
//輸出二維陣列,rows是行數
void
show
(int a,
int size)
}//主函式
思路分析:
第一步將整個序列分成gap=n/2份,然後對每乙份使用插入排序
第二步,將整個序列分成gap=gap/2份,然後對每乙份使用插入排序
依次類推,最終當gap=1時,我們的排序就排好了
c++**實現:
#include
using
namespace std;
//插入排序
void
insertionsort
(int a,
int size)
a[pre+gap]
=temp;}}
}}void
show
(int a,
int size)
}//主函式
intmain()
;insertionsort
(a,7);
show
(a,7);
return0;
}
冒泡 選擇 插入 希爾排序
include include include using namespace std template void print const t a,int n 氣泡排序 每次迴圈總是將最大元素移到隊尾 o n 2 穩定的排序演算法 templatevoid bubblesort t a,int n ...
排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)
工作原理 1 比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個 2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數 3 針對所有的元素重複以上的步驟,除了最後乙個 4 重複步驟1 3,直到排序完成。obj 10,4,29,5,7,80,34,19,8...
排序演算法一之冒泡 選擇 插入 希爾排序
本文中的前三種排序都是公升序排序,又因為這三個排序的平均時間複雜度都是o n2 最差情況也都是o n2 另外這三種排序也是其他排序如快排 希爾排序的基礎,較少,思想較容易理解,所以放在一塊。對於排序的思想可以參考嚴蔚敏的 資料結構 的書,也可以參考 大話資料結構 或者另外一本 妙趣橫生的演算法 c語...