Tsukinai的第三十二个程序
闲来无事想写三种排序算法,权当练手
#include <stdio.h>
#include <stdlib.h>
void InsertionSort(int a[], int n);
void BubbleSort(int a[], int n);
void SelectionSort(int a[], int n);
int count = 0;
int main()
{
int a[20] = {11, 21, 20, 10, 5, 20, 6, 27, 7, 9, 19, 26, 5, 3, 2, 20, 14, 28, 26, 18}, i;
// InsertionSort(a, 20); //插入排序(根据需要去除注释)
// BubbleSort(a, 20); //冒泡排序
// SelectionSort(a, 20); //选择排序
for (i = 0; i < 20; i++)
{
printf("%4d", a[i]);
}
printf("\n\t循环次数为%d\n", count);
system("pause");
return 0;
}
void InsertionSort(int a[], int n)
{
int temp, i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j > 0; j--)
{
if (a[j] < a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
count++;
}
}
}
}
void BubbleSort(int a[], int n)
{
int temp, i, j;
for (i = 0; i < n - 1; i++)
{
for (j = 1; j < n - i; j++)
{
if (a[j] < a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
count++;
}
}
}
}
void SelectionSort(int a[], int n)
{
int temp, i, j, min = 0;
for (i = 0; i < n; i++)
{
min = i;//每次比较后,令新数列(未排序好的)的第一个为最小值
for (j = i + 1; j < n; j++)
{
if (a[j] < a[min])
{
min = j;
}
count++;
}
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
// void BubbleSort(int a[], int n)
// {
// int i, j, temp;
// for (i = n - 1; i > 0; i--)
// {
// for (j = 0; j < i; j++)
// {
// if (a[j] > a[j + 1])
// {
// temp = a[j];
// a[j] = a[j + 1];
// a[j + 1] = temp;
// }
// count++;
// }
// }
// }//第二种冒泡写法