凯凯本凯 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 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题