冒泡排序
虚假的冒泡排序法
#include <stdio.h>
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE + 1];
int length;
}SQList;
//************交换函数*************//
void swap(SQList *L, int i, int j)
{
int temp;
temp = L->r[i];
L->r[i] = L->r[j];
L->r[j] = temp;
}
//************虚假的冒泡排序函数*************//
void fake_BubbleSort(SQList *L)
{
int i,j;
for(i = 1; i < L->length; i++)
for(j = i+1; j < L->length; j++)
{
if(L->r[i] > L->r[j])
swap(L,i,j);
}
}
正宗的冒泡排序法
//************正宗的冒泡排序函数*************//
void authentic_BubbleSort(SQList *L)
{
int i,j;
for(i = 1; i < L->length; i++)
for(j = L->length-1; j >=i; j--)
if(L->r[j] > L->r[j+1])
swap(L,i,j);
}
改造的冒泡排序法
//************改造正宗的冒泡排序函数*************//
void advance_authentic_BubbleSort(SQList *L)
{
int i,j;
int flag = 1;
for(i = 1; i < L->length && flag; i++)
{
flag = 0;
for(j = L->length-1; j >=i; j--)
{
if(L->r[j] > L->r[j+1])
{
swap(L,i,j);
flag = 1;
}
}
}
}
简单选择排序
//************简单选择排序函数*************//
void simple_Selectsort(SQList *L)
{
int i,j,min;
for(i = 1; i < L->length; i++)
{
min = i;
for(j = i+1; j < L->length; j++)
{
if(L->r[min] > L->r[j])
min = j;
}
if(i != min)
swap(L,i,min);
}
}
直接插入排序
//************直接插入排序函数*************//
void Insert_sort(SQList *L)
{
int i,j;
for(i = 2; i < L->length; i++)
{
if(L->r[i] < L->r[i-1])
{
L->r[0] = L->r[i];
for(j = i-1; L->r[j] > L->r[0]; j--)
L->r[j+1] = L->r[j];
L->r[j+1] = L->r[0];
}
}
}