版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30115765/article/details/52785709
算法概览:
插入排序
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[7]={12,5,2,6,4,8,7}; //定义一个需要排列的数组
int i ,temp,p; //定义三个变量
for(i=1;i<7;i++){
//从数据第二位开始取对比数,进行对比,直至数组最后一位结束循环
temp=a[i]; //取第一个对比数
p = i-1;
while(p>=0 && temp<a[p]) //寻找对比数大于所认定的排序的位置
{
a[p+1]=a[p]; //后移一位
p--; //与需要对比的数组前一位继续对比
}
a[p+1]=temp; //将对比数插入对应位置
}
for(i=0;i<7;i++){ //循环输出数组
printf("%d\n",a[i]);
}
}
SHELL排序
void shellSort(int a[],int n){
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2){
for(i=gap;i<n;i++){
for(j=i-gap;j>=0 && a[j]>a[j+gap];j-=gap){
temp = a[j];
a[j] = a[j+gap];
a[j+gap] = temp;
}
}
}
}
冒泡排序
void buble_sort(int a[],int n){
int temp;
for(int i=0; i<n-1; i++){
for(int j=0; j<n-1-i; j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp ;
}
}
}
}
快速排序算法
void quick_sort(int a[],int low,int high){
int i = low; //定义低位
int j = high; //定义低位
int temp =a[i]; //取出对比数
if(low<high){
while(a[j]>=temp && i<j){j--;} //从后往前扫描,寻找比对比数temp小的数
a[i]=a[j];
while(a[i]<=temp && i<j){i++;} //从前往后扫描,寻找比对比数temp大的数
a[j]=a[i];
a[i] = temp; /*当在当组内找完一遍以后就把中间数temp回归*/
//一分为二,重复调用(第一部分小于第一部分)
quick_sort(a,low,i-1); //递归调用
quick_sort(a,i+1,high);//递归调用
}else{
return ;
}
}