原创 C++primer 第七章

本章主要一步步構造類。 7.2 #pragma once #include <iostream> #include <string> using namespace std; struct Sales_data { std::stri

原创 插入排序

void insertSort() { std::vector<int> V{ 5,2,9,4,1,8,3,7,6 }; for (size_t i = 1; i < V.size(); ++i) { //從後往前進行比較,比較之

原创 C++primer 第八章

8.4 #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main() { ifst

原创 選擇排序

//算法的實現是記住最小值的位置,注意不是最小值! void selectSort() { std::vector<int> V{ 5,2,9,4,1,8,3,7,6 }; for (size_t i = 0; i < V.size(

原创 優先隊列/堆

template <typename T> class MaxQ { public: MaxQ(std::initializer_list<T> il) :_v(il) {} size_t size() { return _v.s

原创 雙棧計算求值表達式

#include <iostream> #include <string> #include <stack> int main() { std::string s = "((1+(2+3)*(4*5)))+1)"; std::sta

原创 快速排序

int quick(std::vector<int>& V, int lo, int hi) { int i = lo; int j = hi + 1; //在比較時候,使用了--j,避免跳過hi元素,先加1 int pivot

原创 歸併排序

將一個數組排序,可以先(遞歸地)將它分成兩半分別排序,然後將結果歸併起來。優點:它能夠保證將任意長度爲N的數組排序所需的時間和NlogN成正比;缺點:所需額外的輔助空間和N成正比。 private static double[] au

原创 歸併排序

//自頂向下的歸併排序 void mergeSort(std::vector<int>& V, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) /

原创 文章標題

關於Java中static的筆記 本文中更多的只是自己的一些總結,筆者也是剛學java不就,文中難免出現紕漏,還望大家多多指正。 class Base{ Base() { System.out.pr

原创 快速排序

快速排序是一種分治的排序算法。它將一個數組分成兩個子數組,將兩部分獨立地排序。快速排序和歸併排序是互補的:歸併排序將數組分成兩個子數組分別排序,並將有序的子數組歸併以將整個數組排序;快速排序則是當兩個數組都有序時,整個數組也自然就有序了。

原创 插入排序

插入排序和選擇排序有一個相同的地方是:當前索引左邊的所有元素都是有序的。與選擇排序不同的是:插入排序所需的時間取決於排序數組中元素的初始順序。例如,一個很大且其中的元素已經(或接近有序)的數組進行排序會比對隨機順序的數組或者是逆序數組(最

原创 選擇算法

選擇排序兩個鮮明的特點: 運行時間和輸入無關:爲了找出最小的元素而掃描一遍數組並不能爲下一趟掃描提供任何有用的信息。一個已經有序的數組或者是元素全部相等的元素和一個隨機排序的數組所用的排序時間一樣長。數據移動是最少的:顯然可見,移動

原创 希爾排序

希爾排序是一種基於插入排序的快速排序算法。對於大規模的亂序排序算法,插入排序會很慢,因爲它只會交換相鄰的元素,因此元素只能一點點地從數組的一端移動到另一端。希爾排序爲了加快排序,交換不相鄰的元素對數組局部進行排序,並最終用插入排序將局部有

原创 基於C語言的協程和Java混合編程的服務器

協程 JNI 進程間通信 寫在前面的話: 筆者在學習《UDP》中的網絡模型之後,已經嘗試使用Java語言寫過阻塞IO模型、非阻塞IO模型、IO多路複用模型以及異步IO模型。每種網絡模型的特點這裏就不再贅述,本文主要利用雲風的協程庫