ZGMF-X20A

1、C++計時函數

// 計算時間函數
#include <ctime>
clock_t startTime = clock();
clock_t endTime = clock();
cout<<double(endTime-startTime)/CLOCKS_PER_SEC<<"s"<<endl;

// 計算乘方
#include<cmath>
int n = pow(10, 2);

// swap交換string兩個元素的位置
void reverse(string &s){
    int n=s.size();
    for(int i=0; i<n/2; i++)
        swap(s[i], s[n-1-i]);
}

// 選擇排序
void selectionSort(int 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 binarySearch(int arr[], int n, int target){
    int l=0, r=n-1;
    while(l<=r){
        int mid = l+(r-l)/2;
        if(arr[mid]==target) return mid;
        if(arr[mid]>target) r=mid-1;
        else l=mid+1;
    return -1;
}

// int 2 string
string intToString(int num){
    s = "";
    while(num){
        s += "0" + num%10;
        num /= 10;
    }
    reverse(s);
    return s;
}

// 判斷素數
bool isPrime(int x){
    for(int i=2; i*i<=x; i++){
        if(x % i == 0) return false
    }
    return true;
}

// 頭文件寫法示例
#ifndef STRIKECODE_MYUTIL_H
#define STRIKECODE_MYUTIL_H

#include <ctime>
#include <cassert>
using namespace std;

namespace MyUtil{
    int *generateRandomArray(int n, int rangeL, int rangeR){
        assert(n>0 && rangeL<=rangeR);
        int *arr = new int[n];
        srand(time(NULL));
        for(int i=0; i<n; i++)
            arr[i] = rand() % (rangeR-rangeL) + rangeL;
        return arr;
    }
}

#endif

// 歸併排序
void __merge(int arr[], int l, int mid, int r, int aux[]){
    int i=l, j=mid+1;
    for(int k=l, k<=r; k++){
        if(i>mid) {arr[k]=aux[j]; j++;}
        else if(j>r) {arr[k]=aux[i]; i++;}
        else if(aux[i]<aux[j]) {arr[k]=aux[i], i++;}
        else {arr[k]=aux[j]; j++;}
    }
}

void mergeSort(int arr[], int n){
    int *aux = new int[n];
    for(int i=0; i<n; i++)
        aux[i]=arr[i];
    for(int sz=1; sz<n; sz += sz)
        for(int i=0; i<n; i+=sz+sz)
            __merge(arr, i, i+sz-1, min(i+sz+sz-1, n-1), aux);
}

#判斷空指針和vector方向迭代器,鏈表反向打印
#include <vector>
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> v;
        ListNode* p=head;
        while(p!= nullptr){
            v.push_back(p->val);
            p=p->next;
        }
        return vector<int>(v.rbegin(), v.rend());
    }
};




















































 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章