凯凯本凯 2021-09-05 13:11 采纳率: 72.5%
浏览 24
已结题

C++插入排序优化怎么写?

写挂了,有无大 佬帮忙写一下优化?
我写优化总是写出RE……蒟蒻一枚

  • 写回答

1条回答 默认 最新

  • 学编程的闹钟 2021-09-05 13:45
    关注
    
    #include <iostream>
    #include <algorithm>
    #include "Student.h"
    #include "SortTestHelper.h"
    
    using namespace std;
    
    template <typename T>
    void insertionSort(T arr[], int n) {
        for (int i = 1; i < n; i++) {
            // 寻找元素arr[i]合适的插入位置
            T e = arr[i];
            int j; // j保存元素e应该插入的位置
            for (int j = i; j > 0 && arr[j - 1] > e; j--) {
                arr[j] = arr[j - 1];
            }
            arr[j] = e;
        }
    }
    
    template <typename T>
    void selectionSort(T arr[], int n){
        for(int i=0; i<n;i++){
            int minIndex = i;
            for(int j=i+1;j<n;j++)
                if(arr[j]<arr[minIndex])
                    minIndex = j;
        swap(arr[i], arr[minIndex]);
        }
    }
    
    int main() {
        int N = 10000;
        int *arr1 = SortTestHelper::generateRandomArray(N,0,N);
        int *arr2 = SortTestHelper::copyIntArray(arr1, N);
    
        int swapTimes = 100;
        arr1 = SortTestHelper::generateNearlyOrderedArray(N,swapTimes);
        arr2 = SortTestHelper::copyIntArray(arr1, N);
    
        SortTestHelper::testSort("Selection Sort", selectionSort,arr1, N);
        SortTestHelper::testSort("Insertion Sort",insertionSort,arr2,N);
        delete[] arr1;
        delete[] arr2;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月24日
  • 已采纳回答 10月16日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊