排序小結(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 解釋 實現...