Heim >Backend-Entwicklung >C#.Net-Tutorial >Erfahren Sie in drei Minuten, wie Sie die Auswahl- und Blasensortierung verwenden
Heute werde ich einige Algorithmen zur C-Sprache, Auswahlsortierung und Blasensortierung mit Ihnen teilen.
Für Auswahlsortierung verstehen Sie zunächst die Idee der Sortierung. Bei einem gegebenen Array geht diese Idee zunächst davon aus, dass das erste Element des Arrays das größte oder kleinste ist. Zu diesem Zeitpunkt werden drei Variablen verwendet, um die Indizes der Elemente darzustellen.
Einer stellt den aktuellen Wert dar, einer stellt den größten oder kleinsten gefundenen Index dar und einer wird zum Speichern des Index des Maximalwerts in jeder Schleife verwendet. Nachdem Sie die Grundidee des Programms beherrscht haben, fahren Sie mit der Sequenzierung fort. Nachdem Sie den größten Index gefunden haben, weisen Sie ihn außer jedes Mal dem größten Index zu.
Bestimmen Sie nach dem Finden, ob der angenommene aktuelle Wert der Maximalwert dieses Zyklus ist. Wenn nicht, tauschen Sie den Maximal- und den aktuellen Wert aus, ordnen Sie dadurch das Array in einer bestimmten Reihenfolge an und schreiben Sie schließlich eine Schleife zur Ausgabe das Ergebnis. .
Der Code ist nicht schwierig, daher erkläre ich ihn einfach Schritt für Schritt. Wenn Sie ihn nicht verstehen, können Sie mir eine Nachricht hinterlassen Irgendetwas stimmt nicht, ich kann es korrigieren.
#include<stdio.h> void main()//主函数 { int a[10]; int i,j,w; printf("请输入10个数字: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { for(j=0;j<10;j++) if(a[i]<a[j])//进行比较 //比较后进行交换 { w=a[i]; a[i]=a[j]; a[j]=w; } } printf("排序后:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); }
Ergebnisanzeige:
Als nächstes kommt Blasensortierung, dies ist die beliebteste in der C-Sprache Einer der am häufigsten verwendeten Algorithmen, da er einfacher zu verstehen ist und von den meisten Menschen als Erstes verwendet wird, wenn sie sortieren möchten. Dieser Algorithmus ist relativ einfach zu verstehen.
Bei der Blasensortierung besteht die Hauptidee darin, benachbarte Zahlen paarweise zu vergleichen. Wenn die letztere größer oder kleiner als die vorherige ist, vertauschen Sie ihre Positionen, bis alle Zahlen verglichen sind.
Wenn ein Array der Größe n angegeben ist, muss es n-1 Mal verglichen werden, und jedes Mal, wenn es n-1-i Mal verglichen wird, stellt i den zuletzt verglichenen Index dar Schleife. Schreiben Sie zwei Schleifenurteile. Wenn ein Austausch erforderlich ist, vergleichen Sie die nächsten beiden Zahlen, bis alle Zahlen verglichen sind.
Verwenden Sie abschließend eine Schleife, um alle sortierten Zahlen auszugeben. Der Code lautet wie folgt:
#include<stdio.h> #define N 10 void main() { int a[10]; int i,j,t; printf("请输入10个数字: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); //使用两层循环 for(i=0;i<N-1;i++) { for(j=i+1;j<N-(i+1);j++) if(a[j]<a[j+1])//比较大小 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } printf("排序后:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); }
Ergebnis:
Fazit:
Zur Auswahl Die Sortierungsanalyse ist sehr einfach. Die Größe der Eingabe wird durch den Schlüsselwertvergleich A[j] Daher ist die Auswahlsortierung ein O(n^2)-Algorithmus für jede Eingabe. Daher beträgt die zeitliche Komplexität dieses Experiments O(100) und die räumliche Komplexität O(10). Allerdings beträgt die Häufigkeit, mit der der Schlüssel ausgetauscht wird, nur O(n), genauer gesagt n-1 Mal (ein Austausch wird für jede Iteration der i-Schleife durchgeführt). Diese Funktion macht die Auswahlsortierung vielen anderen Sortieralgorithmen überlegen. Blasensortierung ist ein Prozess, bei dem zwei benachbarte Zahlen verglichen werden und die größere Zahl nach unten sinkt (oder die kleinere Zahl nach oben schwimmt). Insgesamt werden n-1 Vergleiche und Austausche durchgeführt. Um die Implementierung des obigen Blasenalgorithmus zu erleichtern, sollten Sie erwägen, nur ein eindimensionales Array zum Speichern von 10 ganzzahligen Daten zu verwenden. Während des Sortiervorgangs befinden sich die Daten immer in diesem Array (werden an Ort und Stelle bearbeitet und belegen keinen zusätzlichen Platz). Die zeitliche Komplexität dieses Algorithmus beträgt also O(n-1) und die räumliche Komplexität beträgt O(1). Vielen Dank an alle fürs Lesen, ich hoffe, dass Sie viel davon profitieren werden. Dieser Artikel ist reproduziert von: https://blog.csdn.net/zjy18886018024/article/details/80718713 Empfohlenes Tutorial: „C Language“
Das obige ist der detaillierte Inhalt vonErfahren Sie in drei Minuten, wie Sie die Auswahl- und Blasensortierung verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!