1、交换排序:
核心思想是通过不断交换相邻的元素将最大或最小的元素逐步移动到正确的位置上。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a[10] = { 10,3,2,6,5,7,4,9,1,8 };
int i, h, j, k;
for (i = 0; i < 9; i++)
{
for (j = i + 1; j < 10; j++)
{
//交换相邻的元素
if (a[i] > a[j])
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
for (i = 0; i < 10; i++)
{
printf("%3d", a[i]);
}
return 0;
}
2、冒泡排序:
核心思想重复地比较相邻的两个元素,如果顺序错误就交换它们,直到整个序列有序。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int j, i, temp, n, k[10] = { 6,3,8,10,2,4,1,9,7,5 };
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9 - i; j++)
{
if (k[j] > k[j + 1])
{
temp = k[j];
k[j] = k[j + 1];
k[j + 1] = temp;
}
}
}
for (n = 0; n < 10; n++)
printf("%5d", k[n]);
return 0;
}
2、选择排序:
核心思想是每次从待排序的元素中选择最小(或最大)的元素,放置到已排序序列的末尾。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a[10] = { 10,3,2,6,5,7,4,9,1,8 };
int i, h, j, k;
for (i = 0; i < 9; i++)
{
k = i;
for (j = i; j <= 9; j++)
{
if (a[k] > a[j])
k = j;
}
h = a[i];
a[i] = a[k];
a[k] = h;
}
for (i = 0; i < 10; i++)
{
printf("%d\t", a[i]);
}
return 0;
}