Datenstruktur und Algorithmenlernen (Tag 1)

Vorwort

(1) Ich bin ein Junior-Student (genauer gesagt sollte es ein angehender Junior-Student sein, da ich mich erst morgen anmelden werde, hahaha).

(2) In letzter Zeit möchte ich jeden Tag ein paar C-Sprachübungen machen, wenn ich nichts zu tun habe, um mein Programmierniveau zu verbessern, und ich habe über die Anforderungen des Unternehmens an die Fähigkeiten frischer Absolventen nachgedacht, daher denke ich oft an Vorstellungsgespräche. Da ich vorher noch nicht geübt habe, habe ich kein konkretes Konzept für das Vorstellungsgespräch.

(3) Glücklicherweise werde ich das Internet nutzen, um Informationen zu sammeln. Ich habe CSDN geöffnet und „C Language Programming Practice Daily“ überprüft und den Artikel „C Language Interview Questions Daily Practice“ gefunden, in dem ich festgestellt habe: Ja, eingebettete Interviews haben einen hohen Stellenwert Anforderungen an Datenstrukturen und Algorithmen, also muss ich Zeit aufwenden, um meine Datenstruktur und Algorithmenfähigkeiten zu verbessern. Ich kann nichts wissen!

Ziele dieses Kapitels

  1. Beherrschen Sie die Verwendungsszenarien und die Codestruktur der vereinfachten Bucket-Sortierung
  2. Ich werde eine vereinfachte Version der Bucket-Sortierung verwenden, um einige Probleme zu lösen

Vereinfachte Bucket-Sortierung

Thema eins

Thema: Lassen Sie den Computer zufällig 5 Zahlen einlesen und geben Sie dann die 5 Zahlen vom größten zum kleinsten aus.

Idee: Verwenden Sie ein eindimensionales Array.

  1. Ausgabe von klein bis groß
#include <stdio.h>
int main()
{
	int a[11], i, j, t;
	for (i = 0; i <= 10; i++)
		a[i] = 0;     //初始化一维数组为0

	for (i = 1; i <= 5; i++)   //循环读入5个数
	{
		scanf("%d",&t);        //把每一个数读入到变量t中
		a[t]++;                //进行计数
	}

	for (i = 0; i <= 10; i++)
		for (j = 1; j <= a[i]; j++)
			printf("%d ",i);

	getchar(); getchar();
	//这里的getchar();用来暂停程序,以便查看程序输出内容
	//也可以用system("pause");等来代替
	return 0;
}
  1. Sortieren Sie vom größten zum kleinsten
#include <stdio.h>
int main()
{
	int a[11], i, j, t;
	for (i = 0; i <= 10; i++)
		a[i] = 0;     //初始化一维数组为0

	for (i = 1; i <= 5; i++)   //循环读入5个数
	{
		scanf("%d",&t);        //把每一个数读入到变量t中
		a[t]++;                //进行计数
	}

	//i就是输入的数值,a[i]就是i的个数
	for (i = 10; i >= 0; i--)  //改这里就可以决定是从大到小排序还是从小到大排序
		for (j = 1; j <= a[i]; j++)
			printf("%d ",i);

	getchar(); getchar();
	//这里的getchar();用来暂停程序,以便查看程序输出内容
	//也可以用system("pause");等来代替
	return 0;
}

Thema zwei

Thema: Geben Sie n ganze Zahlen zwischen 0 und 1000 ein und sortieren Sie sie vom größten zum kleinsten.

Idee: Um die Ganzzahlen mit einem Datenbereich von 0 bis 1000 zu sortieren, benötigen wir 1001 Buckets, um die Häufigkeit des Vorkommens jeder Zahl zwischen 0 und 1000 darzustellen.

Ausgabe vom größten zum kleinsten.

#include <stdio.h>
int main()
{
	int book[1001], i, j, t, n;
	for (i = 0; i <= 1000; i++)
		book[i] = 0;

	scanf("%d",&n);   //输入一个数n,表示接下来有n个数
	for (i = 1; i <= n; i++)
	{
		scanf("%d",&t);
		book[t]++;
	}

	for (i = 1000; i >= 0; i--)
		for (j = 1; j <= book[i]; j++)
			printf("%d ",i);
	getchar(); getchar();
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_62261692/article/details/132632410
Recomendado
Clasificación