冒泡排序
#include
int main(){
int a[]={22,62,1,-22,95,47,85,63,-45,152,19,28};
int n; //数组个数
int i;
int j; //需要进行比较的轮数
int temp; //用于冒泡交换
n=sizeof(a)/sizeof(a[0]);
for(i=0;i//进行n-1轮比较
for(j=0;j//每轮进行n-i-1次
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i
printf("%d ",a[i]);
}
printf("n");
return 0;
}
简单选择
#include
int main()
{
int i;
int j;
int temp;
int n;
int a[]={10,62,-25,147,98,14,2,63,85,34};
n = sizeof(a)/sizeof(a[0]);
for (i=0;i
for(j=i+1;j
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
直插算法
#include
int main(){
int arr[10] = {5,2,6,0,3,9,1,7,4,8};
int i,j,temp;
int n = sizeof(arr)/sizeof(arr[0]);
for(i=1; i
if(arr[i] < arr[i-1]){//如果后一个小于前一个
temp = arr[i];//将后一个数值存入temp
for(j=i-1; arr[j]>temp && j>=0; j--){//如果前面的元素大于temp,则逐个向后移位
arr[j+1] = arr[j];
}
//此时num[j+1]后的元素移位完成,将temp存入num[j+1],因为最后一次for循环后j--
arr[j+1] = temp;
}
}
for(int i = 0; i
printf("%d ",arr[i]);
}
}