|
|||||||
Home
Books
SimTel
C/C++
|
Home / C Tutorials The C language Arrays and the Bubble Sort by Marshall Brain Thursday, May 27, 1999
Published with kind permission of DevCentral In this section, you will create a small program that generates 10 random numbers and sorts them. Start an editor and enter the following code: #include <stdio.h> #define MAX 10 int a[MAX]; int rand_seed = 10; int rand() { rand_seed = rand_seed * 1103515245 +12345; return (int)(rand_seed / 65536) % 32768; } void main() { int i,t,x,y; /* fill array */ for (i=0; i < MAX; i++) { a[i]=rand(); printf("%d\n",a[i]); } /* more stuff will go here in a minute */ } This code contains several new concepts, although the lines #include and #define should be familiar to you. The line int a[MAX]; shows you how to declare an array of integers in C. As an example, the declaration int a[10]; is declared like this in Pascal: a:array [0..9] of integer; All arrays start at index zero and go to n-1 in C. Thus, int a[10]; contains 10 elements, and the largest valid index is 9. Unlike Pascal, C offers no way to change the range of index values. Also note that because of the position of the array a , it is global to the entire program. The line int rand_seed=10 also declares a global variable, this time named rand_seed. that is initialized to 10 each time the program begins. This value is the starting seed for the random number code that follows. In a real random number generator, the seed should initialize as a random value, such as the system time. Here, the rand function will produce the same values each time you run the program. The line int rand() is a function declaration. The equivalent function declaration looks like this in Pascal: function rand:integer; The rand function accepts no parameters and returns an integer value. The four lines that follow implement the rand function. We will ignore them for now. The main function is normal. Four local integers are declared, and the array is filled with 10 random values using a for loop. Note that arrays are indexed exactly as they are in Pascal. Now add the following code in place of the more stuff ... comment: /* bubble sort the array */ for (x=0; x < MAX-1; x++) for (y=0; y < MAX-x-1; y++) if (a[y] > a[y+1]) { t=a[y]; a[y]=a[y+1]; a[y+1]=t; } /* print sorted array */ printf("--------------------\n"); for (i=0; i < MAX; i++) printf("%d\n",a[i]); This code sorts the random values and prints them in sorted order. Exercises
C Errors to avoid
|
This Article Introduction A simple program Branching/looping Arrays C Details Functions Libraries/makefiles Text files Pointers Parameters Dynamic structures Pointers and arrays Strings Operator precedence The command line Binary files
NetLinks
|
|||||
Next:
C Details
|