這次為大家介紹幾個通過交換元素位置排序的程式,言外之意肯定也有不通過交換元素位置排序的程式。
從最簡單最基本的氣泡排序開始:
氣泡排序:這裡引用一下wiki上面的解釋:它通過重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把交換他們的位置,走訪數列的工作是重複地進行直到沒有再需要交換,這時也就標誌著數列已經排序完成!演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。
有了思路,下面就用用**實現一下:
#include
#include
#include
template
void bubble_sort(typename
std::vector
& it,int n)
}}template
void print(typename
std::vector
it)}int main(void);
int size=it.size();
bubble_sort(it,size);
print(it);
return
0; }
ok,到這裡**就結束了。但是大家要知道這種排序的時間複雜度約為上面提到,當沒有元素交換時就代表 排序已經完成了;因此我們可以在排序語句塊內新增乙個檢測是否有元素發生交換的label。
————————————————————————————
下面為大家介紹插入排序:
先介紹一下基本思想,來自wiki:插入排序(insertion sort)它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。
#include
using
namespace
std;
#define n 10
int main(void);
int temp=0,j;
for(int i=0;iarray[i];
for(j=i;j-1>=0&&array[j-1]>temp;j--)
array[j]=temp;
}for(int m=0;mcout
<
0;}
1008 二哥買期貨
對起始年份和結束年份,可以對每一天單獨判斷 對中間的每個整年,週末總的天數分為兩部分 1.每個整年恰有完整的52個周,所以至少有 2 52 天是週末 2.閏年時,366 7 2,需要判斷12 31和12 30是否為週末即可,平年需要判斷12 31是否為週末 對中間的每個整年,都有11天假日,注意週末...
1003 二哥養細菌
類似bfs擴充套件的思想 將第一代細菌位置入佇列 佇列中細菌到上下左右沒有細菌的位置進行繁殖 更改這些位置的標記 0 1 繁殖出的新一代細菌入棧 如果棧空,結束,否則佇列清空,棧中的新一代細菌入佇列 如果棧空,說明培養皿已經充滿了 題目保證最終能夠充滿培養皿 複雜度o n 1 include 2 3...
1038 二哥的約瑟夫
話說二哥當年學習資料結構的時候遇到了那道猴子報數的題目,其實這就是經典的約瑟夫問題。可是當年的二哥還是個毛頭小子,只會用模擬的方法,而其他同學卻使用了一些令二哥完全摸不到頭腦的方法。二哥一怒之下改了題目 話說當年花果山的猴子要選大王,選舉辦法如下 所有猴子按1 m編號圍坐一圈,二哥站在圈中心,由二哥...