原创 排序(1) - 冒泡排序 (圖文演示)

所有的排序都以升序爲例。考慮複雜度,考慮穩定性的情況。以及在原基礎上步步的優化。 冒泡排序: 算法:從頭開始比較每一對相鄰元素,如果第一個元素比第二個元素大,就交換他們的位置。 舉例: void BubbleSort::sort

原创 排序(2) - 選擇排序 (圖文演示)

所有的排序都以升序爲例。考慮複雜度,考慮穩定性的情況。以及在原基礎上步步優化。 在上篇排序(1)的博客裏有提到過穩定性的問題。但是沒有做出解釋。在這邊解釋一下穩定性的問題。 排序前:5,1,3a,,4,7,3b 穩定的排序:1,

原创 (C++)求解斐波那契數列.(遞歸與非遞歸)

斐波那契額數列:1、1、2、3、5、8、13、21、34… 首先很容易想到遞推關係式:F(n)= F(n-1) + F(n - 2).(n>=3)。 方法1: int fib1(int n) { if (n <= 2) {

原创 二叉搜索樹的實現(C++實現)

包含所有的二叉搜索樹的接口實現。後面博客會陸續寫出AVL樹,B樹,紅黑樹。 接口API的定義: #pragma once #define _CRT_SECURE_NO_WARNINGS #include <iostream>//輸

原创 (C++)合併排序的數組

給定兩個排序後的數組 A 和 B,其中 A 的末端有足夠的緩衝空間容納 B. 編寫一個方法,將 B 合併入 A 並排序。初始化 A 和 B 的元素數量分別爲 m 和 n。 A = [1,2,3,0,0,0] .m = 6 B =

原创 上樓梯(跳臺階)

問題描述 樓梯有n階臺階,上樓可以一步上1階,也可以一步上2階,走完n階臺階共有多少種不同的走法 解題思路: 假設n階臺階有f(n)種走法,第一步有2種走法 1.如果上1階,那就還剩n-1階,共有f(n-1)種走法 2.如果上2節

原创 (C++)統計數字

計算數字 k 在 0 到 n 中的出現的次數,k 可能是 0~9 的一個值. 算法思路: 1.如果n的值比k的值小。那麼直接return 0 2.從k+1開始。 3.取出每一個數字與k進行比較 #include <iostream

原创 (C++)兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那兩個整數,並返回他們的數組下標。你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 方法一:暴力求解.(複雜度較高) 其

原创 (C++)壓縮字符串

#include <iostream> using namespace std; #include <string> class Solution { public: string compressString(string

原创 (C語言)手動創建兩個文本文件text1.txt,text2.txt,要求編程創建text3.txt,實現text1.txt和text2.txt文件中除去首行和末尾對應的數據相加,三個文本的內容如上

在APUE上面看到了標準IO庫,就正好回憶起一個面試題,就貼一下在博客裏 首先分析一下:在test1.txt,和test2.txt中只要是字母的都沒有改變,原封不動的放在test3.txt中。是數字的都加在一起,放在test3

原创 合併兩個有序的鏈表 (C++實現)

兩個鏈表都是有序的,合併它們 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {

原创 利用文件讀寫操作-完成大文件的複製粘貼

利用讀寫函數,完成對文件的複製,粘貼。 初級階段,文件的複製粘貼不使用多線程來搞(雖然之前開多線程來進行排序(此處手動狗頭)) 說明:因爲文件往往很大,所以需要要到循環來讀文件,和寫文件。但是畢竟是模擬複製,粘貼。所以每次我就只

原创 利用程序查看文件的大小 lseek函數

利用代碼來查看文件的大小 在Linux中有一句真理:一切皆爲文件 首先來留意一個有用的函數 lseek。它就可以來查看文件的長度。 #include <sys/types.h> #include <unistd.h> off_t

原创 媽媽再也不用擔心我的 -指針數組。(圖文演示)

今天看了一個面試的題目,指針數組真的“吃人”。 話不多說,上題: 定義: char *s[10]; s[0] = “suqian”; s[1] = “jiaoyu”; printf("%c\n", *s[0]); printf("

原创 排序(3) -插入排序 (圖文演示)

所有的排序都以升序爲例。考慮複雜度,考慮穩定性的情況。以及在原基礎上步步的優化。 插入排序: 插入排序非常類似於撲克牌排序。 算法: **1.在執行過程中,插入排序會把序列分爲2部分。其中頭部是已經排好序的,尾部是待排序的。 **