10大ソートアルゴリズムの【二分挿入ソート】
1741 ワード
昼食を食べて帰ってこの編を洗って寝て、心が疲れる~~~(>~~~実は挿入ソートの核心思想は、1番目の数から順にソートし、0~i-1番目の秩序数列の中でi番目の数の位置を見つけて挿入すればよいということである.このように、この位置を検索する際には、前の最も暴力的な直接挿入ソートを利用してもよいし、次に書く二分挿入ソートを利用してもよいし、速列、積み上げ列など、実際の状況やプロジェクトのニーズに合わせて組み合わせてください.2点ソートでコード実装には、leftとrightポインタがどのように変化しても、この2つの商品は最終的に同じ数字を指すため、ソートするlist[i]>this Digitであればleft+1の位置は挿入する位置であり、逆にlist[i]
include
include
using namespace std;
class BinaryInsertSort{
};//end class
BinaryInsertSort::BinaryInsertSort(vector _list, int _len){
}
void BinaryInsertSort::binary_insert_sort(){
}
void BinaryInsertSort::out(){
}
int main(){
}
include
include
using namespace std;
class BinaryInsertSort{
private:
int len;
vector list;
public:
BinaryInsertSort(vector _list, int _len);
void binary_insert_sort();
void out();
};//end class
BinaryInsertSort::BinaryInsertSort(vector _list, int _len){
for(int i=0; i<_len i="" list.push_back="" this-="">len = _len;
}
void BinaryInsertSort::binary_insert_sort(){
int middle; //
int left; //
int right; //
for(int i=0; i middle) right = (left+right)/2 - 1;
else left = (left+right)/2 + 1;
} //end while
for(int j=i; j>left; j--)list[j] = list[j-1];
list[left] = middle;
} //end for
}
void BinaryInsertSort::out(){
for(int i=0; i
}
int main(){
int array[9] = {9,8,7,6,5,4,3,2,1};
vector list;
for(int i=0; i<9; i++) list.push_back(array[i]);
BinaryInsertSort mazhe(list,9);
mazhe.binary_insert_sort();
mazhe.out();
}