sort.c

/*
 * SORT -- recursively sort a list using selection sort
 *
 * Matt Bishop, ECS 36A, Fall 2019
 *
 * October 30, 2019
 *		-- adapted from a program for ECS 30
 */             
#include <stdio.h>
 
/*
 * the array and its size
 */
int list[] = { 13, 82, 0, 16, 5, -1, 99, 0 };
int nlist = sizeof(list)/sizeof(int);
 
/*
 * recursive sort -- put smallest element at head of array
 * and then sort the rest
 */
void sort(int l[], int lsz)
{
		int i;          /* counter in a for loop */
		int tmp;        /* used to swap ints */
		int min;        /* index of minimum element */
 
		/* base case */
		if (lsz == 1)
			return;
 
		/* find index of smallest number in array */
		min = 0;
		for(i = 1; i < lsz; i++)
			if (l[i] < l[min])
				min = i;
 
		/* move smallest element to 0-th element */
		/* swapping it with whatever is there    */
		if (min != 0){
			tmp = l[0];
			l[0] = l[min];
			l[min] = tmp;
		}
		
		/* recurse */
		sort(&l[1], lsz-1);
}
 
 /*
  * the main routine
  */
int main(void)
{
		int i;			/* counter in a for loop */
 
		/* print initial array */
		printf("initial array: ");
		for(i = 0; i < nlist;i++)
			printf(" %3d", list[i]);
		putchar('\n');
 
		/* now sort */
		sort(list, nlist);
 
		/* print sorted array */
		printf("final array:   ");
		for(i = 0; i < nlist;i++)
			printf(" %3d", list[i]);
		putchar('\n');

		/* all done! */
		return(0);
}


UC Davis sigil
Matt Bishop
Office: 2209 Watershed Sciences
Phone: +1 (530) 752-8060
Email: [email protected]
ECS 36A, Programming & Problem Solving
Version of April 2, 2024 at 12:13PM

You can get the raw source code here.

Valid HTML 4.01 Transitional Built with BBEdit Built on a Macintosh