文章目录
  1. 1. 快速排序
  2. 2. 插入排序
  3. 3. 冒泡排序
  4. 4. 选择排序

排序算法是比较基础且常用的算法,特此总结。

快速排序

/*
*快速排序的递归实现
*/

# include <stdio.h>
# define N 8
int Quick_sort_Partion(int R[],int left,int right)//用递归方法把R[left]至R[right]的记录进行快速排序
{

int temp,buf;//临时变量
int i=left,j=right;
while(left<right)/*从两端交替向中间扫描,直至low和high相等时为止*/
{
buf=R[left];//将区间的第一个记录作为基准置入临时单元中
while(left<right&&buf<=R[right])/*从右向左进行扫描,查找第1个小于基准值的数据元素*/
right--;
/*交换数据元素x[low]和x[high]*/
temp=R[right];
R[right]=R[left];
R[left]=temp;
while(left<right&&buf>=R[left])/*从左向右进行扫描,查找第1个大于基准值的数据元素*/
left++;
if(left==right)
return left;
else{
/*交换数据元素x[low]和x[high]*/
temp=R[right];
R[right]=R[left];
R[left]=temp;
}

}

}

void Quick_sort(int R[],int left,int right)/*定义快速排序函数*/
{

int temp;
if(left<right){
temp=Quick_sort_partion(R,left,right);//划分左、右子序列
Quick_Sort(R,left,temp-1);//递归调用,对左子序列进行快速排序
Quick_Sort(R,temp+1,right);//递归调用,对右子序列进行快速排序

}

}
//测试程序
int main(void){
int i;
int X[N]={26,23,96,13,36,67,45,15};
Quick_Sort(X,0,7);
for(i=0;i<8;i++)
print ("%d",X[i]);
printf("\n");

}

插入排序

# include <stdio.h>
# define N 8
void Insert_Sort(int X[],int n)//插入排序(升序)
{

int temp;
int i,j;
for(i=1;i<n;i++){
temp=X[i];//取出无序序列中的一个元素
for(j=i;temp<X[j-1]&&j>=0;j--)//在已排序的序列中从后向前扫描
{
X[j]=X[j-1];//插入位置后的数据元素后移
}
X[j]=temp;//数据插入有序序列中
}
}
//测试程序
int main(void)
{

int i;
int X[N]={26,23,96,13,36,67,45,15};

Insert_Sort(X,N);

for(i=0;i<8;i++)
printf("%d",X[i]);

}

冒泡排序

void Bubble_Sort(int X[],int n)//冒泡排序(升序)
{

int i,j;
int temp;
for(i=n;i>1;i--)//进行n-1趟排序
{
for(j=0;j<i-1;j++)//每趟排序进行i-1次数据判断
{
if(X[j]>X[j+1])//比较相邻两个数据元素
{
//交换数据元素
temp=X[j];
X[j]=X[j+1];
X[j+1]=temp;
}
}
}
}
//测试程序
int main(void)
{

int i;
int X[N]={26,23,96,13,36,67,45,15};
Bubble_Sort(X,N);

for(i=0;i<8;i++)
printf("%d",X[i]);

}

选择排序

void Select_Sort(int X[],int n)//选择排序
{

int i,j,k;
int temp;
for(i=0;i<n-1;i++)//进行n-1趟排序,每趟选出1个最小记录
{
k=i;
for(j=i+1;j<n;j++)//在其他数据元素中继续查找最小数据
{
if(X[k]>X[j])//记录最小数据元素的位置
k=j;
}
//数据交换
if(k!=i)
{
temp=X[k];
X[k]=X[i];
X[i]=temp;
}
}
//测试程序
int main(void)
{

int i;
int X[N]={26,23,96,13,36,67,45,15};
Select_Sort(X,N);

for(i=0;i<8;i++)
printf("%d",X[i]);

}
文章目录
  1. 1. 快速排序
  2. 2. 插入排序
  3. 3. 冒泡排序
  4. 4. 选择排序