#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 6
void print(int * a, int n);
void swap(int * a, int * b);
int * max(int * a, int n);
int * min(int * a, int n);
void insert(int * a, int n, int index, int value);
void sort_insert(int * a, int n);//插入排序
void sort_bubble(int * a, int n);//冒泡排序
void sort_select(int * a, int n);//选择排序
int main(void)
{
return 0;
}
void print(int * a, int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%3d", a[i]);
}
printf("\n");
}
void swap(int * a, int * b)
{
int temp;
temp = *a;
*a = * b;
*b = temp;
}
int * max(int * a, int n)
{
int * p, * max = a;
for(p = a + 1; p < a + n; p++)
{
max = (*max > *p ? max : p);
}
return max;
}
int * min(int * a, int n)
{
int * p, * min = a;
for(p = a + 1; p < a + n; p++)
{
min = (*min < *p ? min : p);
}
}
void insert(int * a, int n, int index, int value)
{
int i;
for(i = n - 2; i >= index; i--)
{
a[i + 1] = a[i];
}
a[index] = value;
}
/*
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
void sort_insert(int * a, int n)
{
int i;
//从大到小
for(i = n; i > 1; i--)
{
swap(max(a, i), a + i - 1);
print(a, n);
}
/* 从小到大
for(i = 0; i < n; i++)
{
swap(min(a + i, n - i), a + i);
print(a, n);
}
*/
}
/*
冒泡排序:各种沉底~
*/
void sort_bubble(int * a, int n)
{
int i, j;
for(i = n; i > 1; i--)
{
for(j = 0; j < i - 1; j++)
{
if(a[j] > a[j + 1])
{
swap(a + j, a + j + 1);
}
}
}
print(a, n);
}
/*
void sort_select(int * a, int n)
{
int i, j, t;
for(i = 1; i < n; i++)
{
t = a[i];
/*
for(j = i - 1; j >= 0 && t < a[j]; j--);
insert(a, i + 1, j + 1, t);
*/
for(j = i - 1; j >= 0 && t < a[j]; j--)
{
a[j + 1] = a[j];
}
a[j + 1] = t;
print(a, n);
}
}
#include <stdlib.h>
#include <time.h>
#define SIZE 6
void print(int * a, int n);
void swap(int * a, int * b);
int * max(int * a, int n);
int * min(int * a, int n);
void insert(int * a, int n, int index, int value);
void sort_insert(int * a, int n);//插入排序
void sort_bubble(int * a, int n);//冒泡排序
void sort_select(int * a, int n);//选择排序
int main(void)
{
return 0;
}
void print(int * a, int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%3d", a[i]);
}
printf("\n");
}
void swap(int * a, int * b)
{
int temp;
temp = *a;
*a = * b;
*b = temp;
}
int * max(int * a, int n)
{
int * p, * max = a;
for(p = a + 1; p < a + n; p++)
{
max = (*max > *p ? max : p);
}
return max;
}
int * min(int * a, int n)
{
int * p, * min = a;
for(p = a + 1; p < a + n; p++)
{
min = (*min < *p ? min : p);
}
}
void insert(int * a, int n, int index, int value)
{
int i;
for(i = n - 2; i >= index; i--)
{
a[i + 1] = a[i];
}
a[index] = value;
}
/*
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
*/void sort_insert(int * a, int n)
{
int i;
//从大到小
for(i = n; i > 1; i--)
{
swap(max(a, i), a + i - 1);
print(a, n);
}
/* 从小到大
for(i = 0; i < n; i++)
{
swap(min(a + i, n - i), a + i);
print(a, n);
}
*/
}
/*
冒泡排序:各种沉底~
*/
void sort_bubble(int * a, int n)
{
int i, j;
for(i = n; i > 1; i--)
{
for(j = 0; j < i - 1; j++)
{
if(a[j] > a[j + 1])
{
swap(a + j, a + j + 1);
}
}
}
print(a, n);
}
/*
插入排序:从前一段的几个数中选出最大的,放在这一段的最后面,然后依次摆到正确的位置上。
void sort_select(int * a, int n)
{
int i, j, t;
for(i = 1; i < n; i++)
{
t = a[i];
/*
for(j = i - 1; j >= 0 && t < a[j]; j--);
insert(a, i + 1, j + 1, t);
*/
for(j = i - 1; j >= 0 && t < a[j]; j--)
{
a[j + 1] = a[j];
}
a[j + 1] = t;
print(a, n);
}
}