常用的简单排序算法包括冒泡,选择,插入算法等,在应用排列数据较少,不考虑效率的前提下,作为入门级算法学习应用。
那就从最简单的开始学起,fighting!
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define sf scanf_s
#define pf printf_s
//*******************************************************************
//冒泡排序
int main()
{
int i, j, temp;
int *p;
int a[10];
p = a;
srand(time(NULL));
for ( i = 0; i < 10; i++)
{
*(p+i) = rand() / 100;
}
for ( i = 0; i < 10; i++)
{
pf(" %d", *(p + i));
}
pf("\n");
for (i = 0; i < 9;i++)
for (j = 9; j>i;j--)
{
if (*(p + i)>*(p + j))
{
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
pf("冒泡排序:");
for (i = 0; i < 10; i++)
{
pf(" %d", *(p + i));
}
pf("\n");
}
//****************************************************.
//选择排序
int main()
{
void sort(int *a, int size);
int i;
int *p;
int a[10];
p = a;
srand(time(NULL));
for (i = 0; i < 10; i++)
{
*(p + i) = rand() / 100;
}
for (i = 0; i < 10; i++)
{
pf(" %d", *(p + i));
}
pf("\n");
sort(a,10);
for (i = 0; i < 10; i++)
{
pf(" %d", *(p + i));
}
pf("\n");
}
void sort(int *a)
{
int i, j, k, temp;
for (i = 0; i < 9; i++)
{
k = i;
for (j = i + 1; j < 10; j++)
{
if (a[j]>a[k])
k = j;
}
if (k != i)
{
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}