@chawuciren
2018-10-17T23:53:48.000000Z
字数 1533
阅读 649
CSI
#include <stdio.h>
#include <stdlib.h>
void BubbleSort(int a[], int len);//冒泡
void InsertionSort(int a[], int len);//插入
void SeletSort(int a[], int len);//选择
void fast(int a[],int len);//快排
void mertsort(int a[],int len;int left[],int Left,int right[],int Right);//归并
int main(void)
{
int a[8]={2,69,83,66,77,88,56,98};//一个数组
InsertionSort(a,8);//调用函数
for(int i = 0; i < 8; i++)//循环输出
{
printf("%d\n", a[i]);
}
return 0;
}
//冒泡排序
void BubbleSort(int a[], int len)
{
int i=0;
int j=0;
int key=1;//用于替换
for(i = 0 ; i < len - 1 ; i++)
{
for(j = 0 ; j < len - i - 1 ; j++)
if(a[j] > a[j+1])//比较a[j]和a[j+1],大的向上交换,直到这一次全部比完。然后i+1,比较下一次
{
key = a[j];
a[j] = a[j+1];
a[j+1] = key;
}
}
return;
}
//选择排序
void SelectionSort(int a[],int len){
int i,j;
for(i = 0 ; i < len-1 ; i++){
int min_index = i; //存储最小值
for(j = i + 1 ; j < len; j++)
if(a[ min_index ] > a[j])//选出最小值
min_index = j;
if(min_index != i){
int temp = a[i]; //若当前比较的a[i]>最小值,进行交换
a[i] = a[min_index];
a[min_index] = temp;
}
}
}
//插入排序
int InsertionSort(int a[],int len){
int key=0;//用于交换
for(int i=0;i<len-1;i++){
int j=i;
do{
if(a[j]>a[j+1]){ //假设a[j]已排好,a[j]与a[j+1],若a[j+1]大于前一位,交换,否则不交换。若还有更前一位,再比较。
key=a[j];
a[j]=a[j+1];
a[j+1]=key;
}
j-=1; //j=j-1,若前一位存在,比较前一位
} while(j>=0);
}
return ;
}
void fast(int a[],int len){
int k=a[0];//将a[0]作为中间值
int i=0;
int j=len;
int key=0;
do{
for(j=len;j>0;j--){//从后往前找比他xiaode
if(a[j]<k){
key=a[i];
a[i]=a[j];
a[j]=a[i];
}
return ;
}
for(i=0;i<len;i++){//从前往后找比他大的
if(a[i]>k){
key=a[j];
a[j]=a[i];
a[i]=key;
}
}
}while(i!=j);//直到i==j
return 0;
}
void mertsort(int a[],int len;int left[],int Left,int right[],int Right){
for(int k=0;k<len;k++){
if(left[j]<right[i]){//假如左数组的元素小,把他放入原数组
a[k]=left[j];
j+=1;
}
else{
a[k]=right[i]//假如右数组的元素小,把他放入原数组
i+=1;
}
}
return ;
}