Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<vector<int>> partlyShellSort1(vector<vector<int>> a, Efficiency* eff, int gap) {
- int n = a.size();
- int m = a[0].size();
- int start = gap;
- for (int k = 0; k < n; k++) {
- for (int i = start; i < m; i++)
- {
- int temp = a[k][i];
- int j;
- //eff->comparisons++;
- for (j = i; (j >= gap); j -= gap)
- {
- eff->comparisons++;
- if (a[k][j - gap] >= temp) {
- break;
- }
- a[k][j] = a[k][j - gap];
- eff->swaps++;
- }
- a[k][j] = temp;
- }
- }
- return a;
- }
- vector<vector<int>> insertSort(vector<vector<int>> a, Efficiency* eff) {
- *eff = Efficiency{ 0,0 };
- return partlyShellSort1(a, eff, 1);
- }
- vector<vector<int>> shellSort(vector<vector<int>> a, Efficiency* eff) {
- *eff = Efficiency{ 0,0 };
- int n = a.size();
- int m = a[0].size();
- vector<int> gapsM;
- for (int i = m / 2; i > 0; i /= 2) {
- gapsM.push_back(i);
- }
- for (auto g : gapsM) {
- a = partlyShellSort1(a, eff, g);
- }
- return a;
- }
Advertisement
Add Comment
Please, Sign In to add comment