排序小結 (上)

2021-06-28 06:35:40 字數 1202 閱讀 8701

排序小結(c

語言實現)

排序演算法大致可分為內部排序和外部排序,如果整個排序過程不需借助外部儲存器(如磁碟等),所有排序操作都在記憶體中完成,稱為內部排序;如果參與排序的元素很多,資料量極大,需借助外部儲存器進行排序操作,則稱為外部排序。

本篇主講內部排序,歡迎各位提出意見或改進演算法。

一.交換排序:

1.氣泡排序:

(假設有len

個元素,存在陣列

a[0~len-1]

中)遍歷

n-1趟,每次從小到大交換相鄰資料,一趟下來得到最大值存於陣列尾

void bubblesort(int *a,int len)

} if(changed==0)

break; //若changed==0,說明遍歷時a[j]<=a[j+1]恆

//成立,即已有序

} showsort(a,len); //輔助函式:列印輸出

}

2.快速排序:

(遞迴實現)將元素a[begin]

插入到a[begin+1~end]

的合適位置

void quicksort(int *a,int len,int begin,int end)

else

}//結束迴圈條件:i==j,判斷a[i]及a[begin]的大小

if(a[i]>a[begin])

temp=a[i];a[i]=a[begin];a[begin]=temp;

quicksort(a,len,begin,i-1);

quicksort(a,len,i+1,end);

}}

二.選擇排序:

1.直接選擇:

直接選擇排序和氣泡排序的過程相似,區別在於一趟下來選擇最小元素的陣列下標,將元素加入到前端有序區

void selectsort(int *a,int len)

//建立完全二叉樹,i從最後乙個非葉子節點開始

for(i=len-1;i>0;i--)

showsort(a,len);

}

補充:

輔助函式:列印輸出

void showsort(int *a,int len)

{ for(int i=0;i

大二寒假小結(上)

今天打表,寒假第六天,現在是凌晨兩點。這短短的六天過得真是快。先簡要說說我都怎麼安排的吧 早上八點起床用手機百詞斬記下一百個單詞 中午吃完飯之後開始刷題,學演算法 晚上吃飯之後繼續刷 宵夜吃完之後靠在床頭繼續刷 最後碼幾篇部落格,總結白天學的東西,三點四點左右睡 給我的感覺是,從來沒有這麼痛快過!外...

關於TLS經驗小結 上

1.什麼是tls?安全傳輸層協議 transport layer security 用於在兩個通訊應用程式之間提供保密性和資料完整性。tls是ssl的標準化後的產物,有有1.0 1.1 1.2 1.3四個版本,目前最常用的是tls1.2協議。1.tls的一些概念 1.1 演算法種類 非對稱加密 rs...

排序演算法總結(上)

實現 public static void insertsort int a a j 1 temp 把待排序的元素temp插入騰出位置的 j 1 system.out.println system.out.println 1.直接排序之後 for int i 0 i a.length i 解釋 實現...