本文用C 实现4种排序算法: 冒泡排序(buble sort),选择排序(selection sort),插入排序(insertion sort),合并排序(merge sort).
本文是动画讲解4种排序算法的继续,如果对4种排序算法不是很清楚,可以回过头看看。
先把代码放上:
#include <stdio.h>
// Prints all the elements in an array on one line.
void print_array(int array[], int n,int m)
{
for(int i = m; i < n; i++)
{
printf("%i ", array[i]);
}
printf("\n");
}
// Sorts array in place using bubble sort - optimizes to end if there are no swaps
void bubble_sort(int array[], int n)
{
// cycle through array
for(int k = 0; k < n - 1; k++)
{
// optimize; check if there are no swaps
int swaps = 0;
// swap adjacent elements if out of order
for(int i = 0; i < n - 1 - k; i++)
{
if (array[i] > array[i + 1])
{
int temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
swaps++;
print_array(array,n,0);
}
}
if (!swaps)
break;
}
}
// Sorts array in place using selection sort
void selection_sort(int array[], int size)
{
// iterate over array
for(int i = 0; i < size - 1; i++)
{
// smallest element and its position in sorted array
int smallest = array[i];
int position = i;
// unsorted part of array
for(int k = i + 1; k