C - Scripts

From XennisWiki
Jump to: navigation, search

Collection of short scripts written in C.

Basic

Sort an arrry

Die Beschreibung des C-Programms findest du im Quellcode unter Description.

/*
 ============================================================================
 Version     : 1.0
 Description : Das Programm sortiert ein Integer-Array nach der Anzahl der
               gesetzten Bits der Array-Einträge
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

/*
 * Gibt die Anzahl der gesetzten Bits in dem übergebenen Wert zurück
 *
 * @return num Anzahl der gesetzten Bits
 */
int getNumSetBits(int value) {
	int num = 0;
	int i;
	for(i = 0; i < sizeof(int) * 8; i++) {
		int mask = 1 << i;
		// Überprüfe, ob das i-te Bit in "value" eine 1 ist
		if(value & mask) {
			num++;
		}
	}

	return num;
}

/*
 * Bubble-Sort-Algorithmus
 *
 * @param *values Pointer auf ein Array von Integer-Werten
 * @param size Größe des Arrays als Integer
 */
void bubbleSort(int *values, int size) {
	int n, i;
	for(n = size; n > 1; n--) {
		for(i = 0; i < n - 1; i++) {
			if( getNumSetBits(values[i]) > getNumSetBits(values[i + 1]) ) {
				int tmp = values[i];
				values[i] = values[i + 1];
				values[i+1] = tmp;
			}
		}
	}
}

/*
 * Gibt die Werte eines Array aus
 *
 * @param *values Pointer auf ein Array von Integer-Werten
 * @param size Größe des Arrays als Integer
 */
void printArray(int *values, int size) {
	int n;
	for(n=0; n < size; n++) {
		printf("values[%d]: %d\n", n, values[n]);
	}
}

int main(int argc, char** argv) {
	/*
	 * Test
	 */
	int values[5] = {99, 35, 0, 13, 56};
	int size = 5;

	printf("Vor dem Sortieren\n");
	printArray(values, size);

	bubbleSort(values, size);

	printf("Nach dem Sortieren\n");
	printArray(values, size);

	return 0;
}

See also