插入排序和求逆序數

2021-06-19 16:05:29 字數 1076 閱讀 4687

//插入排序的stl版本。
#include "stdafx.h"

#include #include #include #include #include #include "1.h"

using namespace std;

int main(int argc,char** argv)

; insertionsort(a,a+10); //模板引數為具體型別的指標

copy(a,a+9,ostream_iterator(cout," "));

vectorva = vector(a,a+3);

insertionsort::iterator>(va.begin(),va.end());

cout<< endl;

copy(va.begin(),va.end(),ostream_iterator(cout," "));

cout*t=key; }}

利用插入排序的思想,可以解決逆序數的問題。

例如,給定序列a<2,3,8,6,1>求其逆序個數
答案為5個:<2,1> <3,1> <8,1> <6,1> <8,6>
插入排序:假定a[1:j-1]為有序的,排序a[j]的過程為,不斷的將a[j]與a[1:j-1]比較直到遇到小於a[j]的元素停止。
這之前的所有比較元素均大於a[j],根據逆序的定義可知,這個比較次數為逆序數
int main(int argc,char** argv)

; int i,j,n=sizeof(a)/sizeof(int),key;

int count = 0; //逆序個數

for(i=1;i=0;j--)

else

break;

}  a[j+1] = key;

}cout << count;

return(0);

}

上述求逆序數的程式即為插入排序中加入乙個變數count

對於逆序陣列,,選擇排序 和 插入排序 那個更快?

插入排序 可以 更快。不是一定,看插入排序尋找插入位置時所採用的演算法 選擇排序需要從序列中找到當前最大或最小的值才能進行排序,因此每次都需要與子串行中的全部元素進行比較。插入排序無需比較子串行全部元素,在逆序情況下,只需要找到當前序列第乙個比自己大或小的元素,將自身插入到其前乙個位置即可。例如 4...

對於逆序陣列,,選擇排序 和 插入排序 那個更快?

插入排序 可以 更快。不是一定,看插入排序尋找插入位置時所採用的演算法 選擇排序需要從序列中找到當前最大或最小的值才能進行排序,因此每次都需要與子串行中的全部元素進行比較。插入排序無需比較子串行全部元素,在逆序情況下,只需要找到當前序列第乙個比自己大或小的元素,將自身插入到其前乙個位置即可。例如 4...

求逆序數 逆序數 歸併排序

求排列的逆序數 分治 一 題目描述 總時間限制 1000ms 記憶體限制 65536kb 描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1...