मैं सी (या शायद छद्म कोड में) के सभी मूल सॉर्टिंग एल्गोस के साथ सही संदर्भ कार्ड के लिए (बिना भाग्य के) देख रहा हूं। विकिपीडिया जानकारी का एक भयानक स्रोत है, लेकिन इस बार मैं कुछ और पोर्टेबल (जेब आकार संभव होने पर) और निश्चित रूप से प्रिंट करने योग्य कुछ ढूंढ रहा हूं। किसी भी सुझाव की सराहना की जाएगी!सी में मूल प्रकार के एल्गोरिदम के साथ एक अच्छा संदर्भ कार्ड/धोखा शीट?
उत्तर
मैं मेरा एक दोस्त सी के अध्ययन के लिए बनाया है, हो सकता है आप यह उपयोगी मिल जाएगा:
#include <stdlib.h>
#include <string.h>
static void swap(int *a, int *b) {
if (a != b) {
int c = *a;
*a = *b;
*b = c;
}
}
void bubblesort(int *a, int l) {
int i, j;
for (i = l - 2; i >= 0; i--)
for (j = i; j < l - 1 && a[j] > a[j + 1]; j++)
swap(a + j, a + j + 1);
}
void selectionsort(int *a, int l) {
int i, j, k;
for (i = 0; i < l; i++) {
for (j = (k = i) + 1; j < l; j++)
if (a[j] < a[k])
k = j;
swap(a + i, a + k);
}
}
static void hsort_helper(int *a, int i, int l) {
int j;
for (j = 2 * i + 1; j < l; i = j, j = 2 * j + 1)
if (a[i] < a[j])
if (j + 1 < l && a[j] < a[j + 1])
swap(a + i, a + ++j);
else
swap(a + i, a + j);
else if (j + 1 < l && a[i] < a[j + 1])
swap(a + i, a + ++j);
else
break;
}
void heapsort(int *a, int l) {
int i;
for (i = (l - 2)/2; i >= 0; i--)
hsort_helper(a, i, l);
while (l-- > 0) {
swap(a, a + l);
hsort_helper(a, 0, l);
}
}
static void msort_helper(int *a, int *b, int l) {
int i, j, k, m;
switch (l) {
case 1:
a[0] = b[0];
case 0:
return;
}
m = l/2;
msort_helper(b, a, m);
msort_helper(b + m, a + m, l - m);
for (i = 0, j = 0, k = m; i < l; i++)
a[i] = b[j < m && !(k < l && b[j] > b[k]) ? j++ : k++];
}
void mergesort(int *a, int l) {
int *b;
if (l < 0)
return;
b = malloc(l * sizeof(int));
memcpy(b, a, l * sizeof(int));
msort_helper(a, b, l);
free(b);
}
static int pivot(int *a, int l) {
int i, j;
for (i = j = 1; i < l; i++)
if (a[i] <= a[0])
swap(a + i, a + j++);
swap(a, a + j - 1);
return j;
}
void quicksort(int *a, int l) {
int m;
if (l <= 1)
return;
m = pivot(a, l);
quicksort(a, m - 1);
quicksort(a + m, l - m);
}
struct node {
int value;
struct node *left, *right;
};
void btreesort(int *a, int l) {
int i;
struct node *root = NULL, **ptr;
for (i = 0; i < l; i++) {
for (ptr = &root; *ptr;)
ptr = a[i] < (*ptr)->value ? &(*ptr)->left : &(*ptr)->right;
*ptr = malloc(sizeof(struct node));
**ptr = (struct node){.value = a[i]};
}
for (i = 0; i < l; i++) {
struct node *node;
for (ptr = &root; (*ptr)->left; ptr = &(*ptr)->left);
a[i] = (*ptr)->value;
node = (*ptr)->right;
free(*ptr);
(*ptr) = node;
}
}
बहुत बहुत धन्यवाद! मैं निश्चित रूप से इसे प्रिंट करूँगा! –
हेक, यह पत्थर में नक्काशीदार है ... धन्यवाद! – spoulson
आपको रॉबर्ट सेडगेविक द्वारा सी में एल्गोरिदम नामक पुस्तक की आवश्यकता है।
http://www.amazon.com/Algorithms-C-paperback-Robert-Sedgewick/dp/0768682339/
मैं शायद एक प्रयोग एक के लिए विचार करेंगे। नए लोगों को कुछ हद तक महंगे हैं
सुनिश्चित करें कि आपके पास http://www.cs.princeton.edu/~rs/ बुकमार्क किया गया है - कोड और इरेटा सूचीबद्ध हैं। – Randy
धन्यवाद दोस्त! हालांकि मैं विशेष रूप से एक जेब, प्रिंट करने योग्य संदर्भ कार्ड की तलाश में हूं। –
बाइबिल का प्रयास करें (लेकिन, अभी भी पूरी तरह से इसके लायक।):
मुझे नहीं लगता कि यह पोर्टेबल या संदर्भ कार्ड है। टीएओपी एक टोम है। –
सॉर्टिंग जैसे किसी विषय के लिए "धोखा शीट" थोड़ा मूर्ख है। टीएओसीपी वॉल्यूम 3 बड़ा हो सकता है, लेकिन इसे ले जाया जा सकता है। कुछ पढ़ने के बाद वह अपनी "धोखा शीट" बना सकता है। – Tim
पर्याप्त सच है। मैंने तुम्हें कम नहीं किया, लेकिन यह कुछ गहन पढ़ना है। मैंने पहले टीएओपी देखा, और यह सोने का समय नहीं पढ़ रहा है। –
आप निश्चित रूप से बाहर की जाँच करनी चाहिए Animated Sorting Algorithms पेज। यह एल्गोरिदम को सॉर्ट करने के लिए एक अद्भुत संसाधन है।
संपादित करें नए लिंक के लिए पीटरिनो को धन्यवाद!
मैं एक प्रिंट करने योग्य संदर्भ कार्ड की तलाश में हूं, वैसे भी धन्यवाद! –
उपर्युक्त लिंक मर चुका है। साइट स्पष्ट रूप से इस पर ले जाया गया है: http://www.sorting-algorithms.com/ – Peterino
@ पीटरिनो धन्यवाद! मैंने लिंक तय किया! –
आम तौर पर, लोग अलग-अलग एल्गोरिदम के बारे में बहुत ज्यादा चिंता नहीं करते हैं, और कई लोग अपनी सॉर्टिंग करने के लिए मानक लाइब्रेरी qsort()
फ़ंक्शन (जो वास्तव में क्विक्सॉर्ट का उपयोग नहीं कर सकते हैं) का उपयोग कर सकते हैं। जब वे इसका उपयोग नहीं करते हैं, तो आमतौर पर उन्हें अधिक जटिल आवश्यकताएं होती हैं। ऐसा इसलिए हो सकता है क्योंकि उन्हें बाहरी सॉर्टिंग (डिस्क पर डेटा फैलाना), या प्रदर्शन से संबंधित कारणों के लिए आवश्यकता होती है। कभी-कभी, qsort()
(या, वास्तव में, bsearch()
) का उपयोग करने से जुड़े फ़ंक्शन-कॉल-प्रति-तुलना का अनुमानित ओवरहेड बहुत अच्छा है। कभी-कभी, लोग क्विक्सोर्ट के संभावित ओ (एन^2) के सबसे खराब मामले व्यवहार को जोखिम नहीं लेना चाहते हैं, लेकिन अधिकांश उत्पादन qsort()
एल्गोरिदम आपके लिए इससे बचेंगे।
एल्गोरिदम पर विभिन्न पुस्तकों के अलावा - सेडगेविक एक ऐसा है, लेकिन कई अन्य हैं - आप जॉन बेंटले के "प्रोग्रामिंग मोती" या "अधिक प्रोग्रामिंग मोती" किताबों पर भी नजर डाल सकते हैं। यह अच्छा होगा, वैसे भी - वे उत्कृष्ट हैं - लेकिन "अधिक प्रोग्रामिंग मोती" में भी लिखे गए सरल एल्गोरिदम की लाइब्रेरी शामिल है, जिसमें सम्मिलन क्रम, ढेर क्रम और त्वरित प्रकार शामिल हैं। यह बबल सॉर्ट, शैल सॉर्ट, और बोगोर्ट को याद करता है। इसमें रैडिक्स सॉर्ट भी शामिल नहीं है।
अजीब कोड के प्रतिलेखन के लिए जीमेल (मेरे नामों के बीच एक बिंदु के साथ) पर मुझसे संपर्क करें - 360 लाइनें (एसओ के लिए बहुत बड़ी; ईमेल द्वारा तुच्छ)। –
- 1. एन सूचियों से वस्तुओं को संतुलित वितरण के साथ एक साथ जोड़ने के लिए अच्छा एल्गोरिदम?
- 2. इस मामले में एक परिपत्र संदर्भ जांच के लिए एक अच्छा एल्गोरिदम क्या होगा?
- 3. सी ++ - संदर्भ प्रकार
- 4. सी # में, बनाम संदर्भ प्रकार मूल्य प्रकार के उपयोग
- 5. बूस्ट :: एल्गोरिदम के लिए एक अच्छा उदाहरण ::
- 6. संदर्भ प्रकार और जीसी के साथ संरचना?
- 7. सी # स्ट्रिंग संदर्भ प्रकार?
- 8. एक संदर्भ प्रकार
- 9. सी # -excel इंटरऑप - एक शीट
- 10. मूल संदर्भ
- 11. क्या एक अच्छा सी ++ संकलक एक संदर्भ को अनुकूलित करेगा?
- 12. + = सी # में नल प्रकार के साथ ऑपरेटर
- 13. एक अच्छा vi संदर्भ के लिए सिफारिशें?
- 14. एसटीएल वेक्टर के एक अच्छा सी समकक्ष?
- 15. सी ++ में किसी ऑब्जेक्ट प्रकार के संदर्भ को बनाए रखें?
- 16. अच्छा ऑनलाइन सी ++ वाक्यविन्यास संदर्भ?
- 17. एक टुकड़े की मूल गतिविधि का संदर्भ देने के लिए सबसे अच्छा अभ्यास?
- 18. सी ++ स्थानीय चर के संदर्भ में संदर्भ
- 19. सी ++ में एक अद्वितीय आईडी उत्पन्न करने के लिए एल्गोरिदम?
- 20. सी # में पूर्णांक संदर्भ प्रकार क्या है?
- 21. इनपुट के रूप में तारों के साथ सी # में सरल एक्सेल शीट बनाना
- 22. सी # में यह एल्गोरिदम में पुनरावर्ती कार्यों का उपयोग करने के लिए एक अच्छा अभ्यास है?
- 23. एक दस्तावेज़/नोएसक्यूएल डेटाबेस बैलेंस शीट जमा करने के लिए एक अच्छा उम्मीदवार है?
- 24. सबसे अच्छा स्वत: पूर्ण/सुझाव एल्गोरिदम, डेटास्ट्रक्चर [सी ++/सी]
- 25. प्रकार के एक प्रकार में टाइप प्रकार के JArray को कैसे चालू करना सबसे अच्छा है?
- 26. सी ++ संदर्भ प्रकार अनुशंसित उपयोग
- 27. एल्गोरिदम - LogLogN विशिष्ट तत्वों के साथ एक सरणी सॉर्ट करें
- 28. एक अतिरिक्त संपत्ति के साथ Knapsack एल्गोरिदम
- 29. सी ++ मूल प्रकार से प्राप्त होता है
- 30. ऑब्जेक्ट का मूल प्रकार
सवाल है, तो आप एक क्यों की जरूरत है? नियमित रूप से किसी भी चीज़ पर आपको इन्हें लागू नहीं करना चाहिए। –