桶演算法-排序-C++
桶演算法-排序-C++
#include<iostream> using namespace std; int main(){ int book[10],num,input; //0初始化 for(int i=0;i<10;i++){ book[i]=0; } //提示輸入個數 cout<<"輸入個數: "; cin>>num; cout<<"輸入一串數:"; //桶 //入桶 for(int i=1;i<=num;i++){ cin>>input; book[input]++; } //出桶 for(int i=1;i<=num;i++) { if(book[i]>0){ for(int j=0;j<book[i];j++) cout<<i<<" "; } } return 0 ; }
將數字555放如a[555]中
出現一次a[555]++
按順序打印出來
相關推薦
桶演算法-排序-C++
桶演算法-排序-C++ #include<iostream> using namespace std; int main(){ int book[10],num,input; //0初始化 for(int i=0;i<10;i++){ book[i]=0;
[C語言演算法]排序之桶排序
複習筆記 ①新建11位int陣列a; ②迴圈設定a的初始值為0; ③迴圈輸入5位數,並設定相應位置的數增加; ④遍歷陣列a,j小於a[i]的話就列印i; ⑤getchar()停止檢視結果;
深入淺出數據結構C語言版(22)——排序決策樹與桶式排序
不改變 自然 只需要 都是 變種 限定 style buck oid 在(17)中我們對排序算法進行了簡單的分析,並得出了兩個結論: 1.只進行相鄰元素交換的排序算法時間復雜度為O(N2) 2.要想時間復雜度低於O(N2),算法必須進行遠距離的元素交換
(排序演算法)linux c語言實現選擇排序演算法(氣泡排序的略微改進版)
快速排序演算法和氣泡排序演算法是差不多的,都是要兩層迴圈,外迴圈是要比較的個數,其實就是元素的個數,內迴圈就是外層那個標記和其他的比較大小, 氣泡排序是相鄰的兩個,兩兩比較,最後交換出一個最大或者最小值, 快速排序是在氣泡排序的基礎上,找出那個最小的或者最大的,但是不是直接交換,
(排序演算法)linux c語言實現快速排序(氣泡排序的改進版)
快速排序演算法是對氣泡排序演算法的一種改進,氣泡排序是對單個元素的升降,快速排序是對所有元素的升降,不過這個升降是取了某一個標準的前提下,在本文程式碼中,就以a[i],其實就是以最左邊的元素為參考,比較交換之後,將這個參考元素放到分界的地方,即i的位置。 程式碼如下,裡面有比較詳細的
(排序演算法)linux c語言實現二分插入排序演算法(簡化版本的插入排序演算法)
二分插入演算法是在已經排序好的序列裡插入一個元素,是穩定的演算法,關鍵詞是折中。 比如說我要在12345678910裡插入一個3,那麼我先看看中間的數比3大,還是比3小,要是比3大,我就去後一半,如果是比3小,我就去前一半,現在進入某個一半後,再做如此操作,最後將其他的元素依次往後挪
快速排序演算法實現 C# 版本
採用遞迴思想 實現了 快速排序演算法 如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespa
【演算法】C++用連結串列實現一個箱子排序附原始碼詳解
01 箱子排序 1.1 什麼是分配排序? 分配排序的基本思想:排序過程無須比較關鍵字,而是通過"分配"和"收集"過程來實現排序.它們的時間複雜度可達到線性階:O(n)。 1.2 什麼是箱子排序? 箱子排序是分配排序的一種,箱子排序也稱桶排序(Bucket Sort),其基本思想是:設定若干個箱子,依次掃描待
快速排序演算法的C語言實現
大一想進社團,院科協技術部,面試要自己用c寫個快排。以前從來沒有接觸過,對c的瞭解也僅限於高中和暑假出於興趣看的一點點資料,只能從基礎開始學。找了很多程式碼,有些本身自己就是錯的,還有些非常繞,根本看不懂。最後東拼西湊,總算是弄出來了個原型,再慢慢修改,終於弄
java排序演算法(八)------桶式排序
桶式排序 實現程式碼: /** *桶式排序:有限個數字m,每個數字的大小都在1與n之間 *,則我們可以假設有n個桶,遍歷m個數字,將其存入對應的桶中 *(如數字的值為3,就存入3號桶,桶的值對應存入數字的個數) */ public class Bucke
桶排序——C語言
桶排序是一種常見的排序方式。其主要是先確定一定大小的桶,再將陣列數值存入桶的對應下標中,最後對非空桶進行排查,將桶的數值賦給數值。 程式碼實現: /**桶排序**/ void bucket(int *data)///隨機產生data陣列的值 { int t;
排序演算法(C語言版)
交換類 氣泡排序(Bubble Sort) O(n2)O(n^2)O(n2) 最簡單的一種排序演算法。先從陣列中找到最大值(或最小值)並放到陣列最左端(或最右端),然後在剩下的數字中找到次大值(或次小值),以此類推,直到陣列有序排列。 void Bubble
(排序演算法)linux c語言實現簡化版本的插入排序演算法(二分插入)
二分插入演算法是在已經排序好的序列裡插入一個元素,是穩定的演算法,關鍵詞是折中。 比如說我要在12345678910裡插入一個3,那麼我先看看中間的數比3大,還是比3小,要是比3大,我就去後一半,如果是比3小,我就去前一半,現在進入某個一半後,再做如此操作,最後將其他的元
(排序演算法)linux c語言實現快速排序
/*************************************************** ##filename : arrinsert.c ##author : GYZ ##
(排序演算法)linux c語言實現選擇排序演算法
/*************************************************** ##filename : arrinsert.c ##author : GYZ ##
插入排序演算法及C語言實現
插入排序演算法是所有排序方法中最簡單的一種演算法,其主要的實現思想是將資料按照一定的順序一個一個的插入到有序的表中,最終得到的序列就是已經排序好的資料。 直接插入排序是插入排序演算法中的一種,採用的方法是:在新增新的記錄時,使用順序查詢的方式找到其要插入的位置,然後將新記錄插入。 很多初學者所說的插入排
歸併排序演算法及其C語言具體實現
本節介紹一種不同於插入排序和選擇排序的排序方法——歸併排序,其排序的實現思想是先將所有的記錄完全分開,然後兩兩合併,在合併的過程中將其排好序,最終能夠得到一個完整的有序表。 例如對於含有 n 個記錄的無序表,首先預設表中每個記錄各為一個有序表(只不過表的長度都為 1),然後進行兩兩合併,使 n 個有序表變為
【演算法】希爾排序C語言實現
上一篇文章我們一起學習了直接插入排序,它的原理就是把前i個長度的序列變成有序序列,然後迴圈迭代,直至整個序列都變為有序的.但是說來說去它還是一個時間複雜度為(n^2)的演算法,難道就不能再進一步把時間複雜度降低一階麼?可能有很多同學說快速排序,堆排序,我都會,這些簡單的插
資料結構與演算法(C語言) | 二叉排序樹
二叉排序樹的定義—— 二叉排序樹 ( Binary Sort Tree) 或者為空;或者是具有如下特性的二叉樹: (1)若根的左子樹不空,則左子樹上所有結點的關鍵字均小於根結點的關鍵字; (2)若
歸併排序演算法(C語言)
歸併排序: 思想:利用將兩個的有序資料序列合併成一個新的有序資料序列,在如何分成兩個有序資料的問題下,採用分治演算法。 時間複雜度:O(n*logn) 空間複雜度:O(n) 是否穩定: 穩