原创 數列的逆序數對微軟面試題

題目:求一個數組中的逆序數對的個數。eg{2,4,3,1},2,1爲一個逆序數對,4,3;4,1;3,1共4對; 一種比較直接的做法,就是遍歷n次,每次把數組中剩下的數遍歷完。代碼如下: /**********************

原创 scanf和getchar

寫個簡單的小代碼,發現用scanf在處理回車和空格上面,有點。。網上找了資料,自己也動手試下,結果如follow: #include<stdio.h> int main() {char a1,b1;                    

原创 BST的生成,後續輸出

#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct BiNode { int data; struct BiNode * lchild; s

原创 直接排序

直接排序,先保證前面2個數升序,在插入後面一個數,這個數的插入只需向前需找到第一個小於自己的數,插在前面即可 版本1:先找位置,在將其後的數據依次後移,需要3個變量ijk //版本1,需要ijk三個變量: void in_sort(in

原创 堆排序(TOP K)

堆的定義,它是一個完全二叉樹,存儲結構爲數組。給出一個數組之後,可以認爲這個初始堆是按照結點序號從小到大存放的。 滿足對的定義要求,所有父結點的鍵值都要不小於(或者不大於)子結點的鍵值,稱爲大頂堆(小頂堆)。 對堆的操作有插入、刪除,這些

原创 快速排序

快排的思想: 1)先挖出一個坑,將其值保存到key,i,j分別指向待排序的隊列首位。 2)從高位想低位找第一個小於key的值,用其值填第一個坑。即a[i]=a[j](i爲待排序首位)。 3)從低位向高位找第一個大於key的值,用其值填上一

原创 冒泡排序的三種實現方法

待整理 int& a 是引用的意思,相當於原有變量的一個副本。 比如int n = 4; int& a = n; 此時a和n爲同一個東西,改變a的值,就會改變n的值。 void swap(int &a,int &b) { in

原创 C語言接收一組數據

編程中經常會用到接收一組輸入數據,通常情況下需要先指定輸入數據的個數,不指定的情況下怎麼做呢? scanf("%d",&a[0]); while(getchar()!='\n') { i++; scanf("%d",&

原创 歸併排序

歸併排序,在直接手動操作排序時: 先將待排序的序列按序兩個1合成一個2,兩兩一組,如果最後剩下一個單獨的,則它自己獨爲一組,組內兩數據比較排序; 再將兩個2合成一個4,繼續在組內排序,不夠兩組2的單獨爲組,不用進行排序了; 這樣下去,知道

原创 最大公約數--歐幾里得算法

歐幾里得輾轉相除求最大公約數:設gcd(a,b)求的是ab的最大公約數,設a>b,可以證明gcd(a,b)=gcd(b,a%b),證明過程略。 設r=a%b,把gcd(a,b)變爲gcd(b,r),再進行輾轉相除變爲gcd(r,b%r),

原创 九度OJ_1061

題目描述:     有N個學生的數據,將學生數據按成績高低排序,如果成績相同則按姓名字符的字母序排序,如果姓名的字母序也相同則按照學生的年齡排序,並輸出N個學生排序後的信息。 輸入:     測試數據有多組,每組輸入第一行有一個整數N

原创 畢設進程:postgreSQL操作入門

上午基本把需要的配置都弄好了,諮詢學長接下來要做的事情就是去查找公交站點的數據,然後把公交站點描上,還有公交路線。 公交路線,最終只選擇了幾條,公交站點也選的比較少,因爲我是一個一個手動獲取的,而不是用爬蟲也不是編程獲取的,因此站點的數據

原创 荷蘭國旗

首先是將數組整理成負數在前,正數在後 思想:一次快排,標杆選爲第一個數,確定其最終位置即可 void negtive_front(int a[],int n) { int temp=a[0]; int i=0,j=n-1; whi

原创 九度OJ_1490

題目描述: 不用strcat 函數,自己編寫一個字符串鏈接函數MyStrcat(char dstStr[],charsrcStr[]) 輸入: 兩個字符串,字符串由小寫字母組成。 輸出: 鏈接後的字符串 #include<st

原创 迭代

求斐波那契數列: #include<stdio.h> int main() { int a,b,c; a=1; b=2; int n; scanf("%d",&n); for(i=3;i<=n;i++) { c=a+b