常用排序演算法及C常式

  排序(Sorting)是電腦程式設計中的一個重要而且常用的操作,它的功能是將一個資料元素的任意序列,重新排列成一個按關鍵字有序的序列。下面介紹最為常用的幾種排序演算法,並進行簡單地比較分析以及C語言常式。這些C常式都是筆者在學習和工作中慢慢積累起來的,應該說還是有些用處的。(劉愛貴 / Aiguille.LIU)1、快速排序演算法  快速排序是目前公認的最好排序演算法,是一種基於分治技術的重要排序演算法,演算法時間複雜度為O(nlog2n)。/* quicksort.c */#define

用彙編的眼光看C++(之預設模板、特化模板)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    預設函數是C++的一個基本特色。預設函數定義比較簡單,也就是說,對於函數的某一個輸入參數或者幾個輸入參數,如果你沒有特定的數值的話,那我們就會用預設的資料進行代替。如果你在調用的過程中使用了自己的資料,那麼預設資料將被我們自己定義的資料覆蓋。下面就是一個預設函數的樣本:int add(int m, int n = 10){return m + n;}     如果調用呢,有什麼區別?2

從彙編的眼光看C++(之遞迴函式與模板類)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    遞迴,相信有過基本C語言經驗的朋友都明白,就是函數自己調用自己。所以,本質上說,它和普通的函數調用沒有什麼區別。今天之所以會把模板類和遞迴聯絡在一起,是因為我們可以用遞迴的方法實現模板的遞迴。閑話不多說,我們先從一個統計函數開始說起。int process(int m){int index = 0;int count = 0;assert(m >= 0);for (; index

從彙編的眼光看C++(之泛型程式設計)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】     泛型程式設計其實不難。本質上說,泛型程式設計就是讓通用的演算法應用到所有的資料類型。具體來說,int是我們熟悉的整數類型。那麼一般情況下,如果我們寫一個int整數的排序演算法,應該怎麼寫呢?大家可以自己試試?下面的代碼是我的一個範例;void bubble_sort(int array[], int length){int temp = 0;int outer = 0;int

從彙編的眼光看C++(之delete記憶體泄露)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    有過C語言編程的朋友大多知道,如果在malloc記憶體之後不及時free掉記憶體,那麼很有可能會造成記憶體泄露的。那麼在C++上面,是不是也存在這樣的問題呢?結果是C++上面同樣也存在記憶體泄露的危險。這個危險就是如果new後面不能delete的話,也會造成記憶體的泄露。還有不清楚的朋友可以看看下面的樣本:class test{int data;public:test(int

從彙編的眼光看C++(之指標拷貝)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    指標是編程人員的夢魘,對C語言的開發人員是如此,對C++的開發人員也是如此。特別是在C++中,如果不注意處理類中的指標,非常容易出問題。如果朋友們不相信可以看看下面的代碼:class data{int* value;public:data(int num){if(num > 0)value = (int*)malloc(sizeof(int)*

用彙編的眼光看C++(之算術符重載陷阱)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    在算術符重載裡面,“=”重載可能是最經常使用的一種。但是好多人就誤以為在函數中,凡是類出現“=”的地方,那就是調用算術符重載,其實不然。為什麼呢?我們可以看看下面的代碼。首先,我們定義一個基本類:class data{char* value;int number;public:explicit data(int num = 0){if(num){number = num;value =

C語言和設計模式(繼承、封裝、多態)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】   

用彙編的眼光看C++(之算術符重載)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    算術符重載是類的有一個特性,但是每個人使用的方法不一樣。用的好,則事半功倍;但是如果不正確的使用,則會後患無窮。    (1) 簡單算術符介紹  

隨想錄(寫給自己的C++編程規範)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】     

linux下的C語言開發(開篇)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】   

用彙編的眼光看C++(之const屬性)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    const是C/C++語言中的關鍵字,但是如果用的好,可以極大地提高代碼的健壯性。一般來說const使用的地方還是蠻多的,但是主要還是下面幾個地方:(1)普通變數的保護;(2)地址空間的保護;(3)類初始變數的聲明和保護;(4)類變數在函數中的保護。const的保護主要來自於編譯器層面,和程式的運行沒有關係。    (1)普通變數的保護const int data = 10;const

linux下的C語言開發(makefile編寫)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    對於程式設計員來說,makefile是我們繞不過去的一個坎。可能對於習慣Visual

linux下的C語言開發(gdb調試)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    編寫代碼過程中少不了調試。在windows下面,我們有visual studio工具。在linux下面呢,實際上除了gdb工具之外,你沒有別的選擇。那麼,怎麼用gdb進行調試呢?我們可以一步一步來試試看。#include <stdio.h>int iterate(int value){ if(1 == value) return 1; return

C語言和設計模式(總結篇)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    設計模式的書相信很多人都看過。對於設計模式這樣一種方法,相信不同的人有不同的理解。我在這裡寫的部落格只是我個人對設計模式的粗淺認識。文中肯定存在很多的不足和不成熟之處,希望朋友們諒解。望大家多多指正,謝謝!01)C語言和設計模式(繼承、封裝、多態)02)C語言和設計模式(訪問者模式)03)C語言和設計模式(狀態模式)04)C語言和設計模式(命令模式)05)C語言和設計模式(解譯器模式)0

linux下的C語言開發(AT&T 組合語言)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    同樣是x86的cpu,但是卻可以用不同形式的組合語言來表示。在window上面我們使用的更多是intel格式的組合語言,而在Linux系統上面使用的更多的常常是AT&T格式的組合語言。那什麼是AT&T格式的彙編代碼呢?我們可以寫一個試試看。.datamessage: .string "hello!\n"length = . - message.text.global

linux下的C語言開發(靜態庫)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    在我們編寫軟體的過程當中,少不了需要使用別人的庫函數。因為大家知道,軟體是一個協作的工程。作為個人來講,你不可能一個人完成所有的工作。另外,網路上一些優秀的開源庫已經被業內廣泛接受,我們也沒有必要把時間浪費在這些重複的工作上面。   

linux下的C語言開發(動態庫)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】   

linux下的C語言開發(自動編譯工具)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    在Linux下面,編寫makefile是一件辛苦的事情。因此,為了減輕程式員編寫makefile的負擔,人們發明了autoconf和automake這兩個工具,可以很好地幫我們解決這個問題。    我們可以通過一個簡單的樣本來說明如何使用組態工具。(1)首先,編寫源檔案hello.c。#include <stdio.h>int main(int argc, char**

linux下的C語言開發(進程建立)

【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    在Linux下面,建立進程是一件十分有意思的事情。我們都知道,進程是作業系統下面享有資源的基本單位。那麼,在Linux下面應該怎麼建立進程呢?其實非常簡單,一個fork函數就可以搞定了。但是,我們需要清楚的是子進程與父進程之間除了代碼是共用的之外,堆棧資料和全域資料均是獨立的。#include <unistd.h>#include

總頁數: 4314 1 .... 1616 1617 1618 1619 1620 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.