2
我試圖在C++中實現一個空隙插入排序,稱爲庫排序。我理解這個概念,但是我很難將其從常規的舊插入排序中解脫出來。我不知道我會如何解釋陣列中的空白。我一直在使用整數0來指定一個差距。我到目前爲止的代碼如下,這是一個工作插入排序修改高頻。你會如何去實施一個圖書館排序?我瀏覽了20頁谷歌,並沒有看到任何編程語言的實際代碼示例。空隙插入排序實現
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
vector<int> librarySort(int arr[20])
{
int j,tmp;
vector<int> array;
for (int i=0;i<20;i++)
{
array.push_back(0);
array.push_back(arr[i]);
}
for (int i=0;i<40;i++) { cout << array[i] << ",";}
cout << endl;
for (int i = 1; i < 40; i++)
{
j = i;
while (j > 0 && array[j - 1] > array[j])
{
tmp = array[j];
array[j] = array[j - 1];
array[j - 1] = tmp;
j--;
}
}
for (int i=0;i<40;i++) { cout << array[i] << ",";}
return array;
}
int main()
{
srand(time(0));
int array[20]= {0};
for (int i=0;i<20;i++)
{
int n=rand()%19+1;
tmp=array[i];
array[i]=array[n];
array[n]=tmp;
}
for (int i=0;i<20;i++) { cout << array[i] << ",";}
cout << endl;
librarySort(array);
}