以前写的,今天看到了就放到上面.
#include <stdio.h>
#define swap(a,b) {a = a + b;b = a - b;a = a - b;}
void bul(int *s, int n)
{
int i, j;
for(i = 0; i < n - 1; i++){
for(j = 0; j < n - 1 - i; j++){
if(s[j] > s[j + 1]){
swap(s[j], s[j + 1]);
}
}
}
}
void select(int *s, int n)
{
int i,j;
for(i = 0; i < n-1; i++){
for(j = i + 1; j < n; j++){
if(s[i] > s[j]){
swap(s[i], s[j]);
}
}
}
}
void shell(int *s, int n)
{
int d, i, j, temp;
for(d = n/2; d >= 1; d = d/ 2){
for(i = 1+d; i < n; i++){
temp = s[i];
for(j = i - d; j >= 0 && s[j] > temp; j= j - d){
s[j+d] = s[j];
}
s[j+d] = temp;
}
}
}
void insert(int *s, int n)
{
int i, j, temp = 0;
for(i = 1; i < n; i++){
temp = s[i];
for(j = i - 1; j >= 0 && s[j] > temp; j = j - 1){
s[j + 1] = s[j];
}
s[j + 1] = temp;
}
}
int main(void)
{
int i = 0;
int arry[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int len = sizeof(arry) / sizeof(arry[0]);
printf("len:%d\n", len);
//bul(arry, len);
//select(arry, len);
//insert(arry, len);
shell(arry, len);
printf("arry[10]:");
for(i = 0; i < len; i++){
printf("%d ", arry[i]);
}
putchar('\n');
printf("\n");
return 0;
}