1,冒泡排序 Bubble Sort
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 10
void bubble_sort(int a[],int len);
int main(){
int i;
int array[SIZE];
srand((int)time(NULL));
for(i=0;i<SIZE;i++){
array[i]=rand()%100;
}
bubble_sort(array,SIZE);
for(i=0;i<SIZE;i++){
printf("%d\t",array[i]);
}
return 0;
}
void bubble_sort(int a[],int len){
int i,j,temp;
for(i=0;i<len-1;i++){
for(j=0;j<len-i-1;j++){
if(a[j+1]<a[j]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
}
2,插入排序 insertion sort
(1)直接插入排序 insertion sort
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 10
void insert_sort(int a[],int len);
int main(){
int i;
int array[SIZE];
srand((int)time(NULL));
for(i=0;i<SIZE;i++){
array[i]=rand()%100;
}
insert_sort(array,SIZE);
for(i=0;i<SIZE;i++){
printf("%d\t",array[i]);
}
return 0;
}
void insert_sort(int a[],int len){
int i,j,temp;
for(i=1;i<len;i++){
temp=a[i];
for(j=i-1;j>=0&&a[j]>temp;j--){
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
(2)折半插入排序 binary insertion sort
#include <time.h>
#include <stdlib.h>
#define SIZE 10
void insert_sort(int a[],int len);
int main(){
int i;
int array[SIZE];
srand((int)time(NULL));
for(i=0;i<SIZE;i++){
array[i]=rand()%100;
}
insert_sort(array,SIZE);
for(i=0;i<SIZE;i++){
printf("%d\t",array[i]);
}
return 0;
}
void insert_sort(int a[],int len){
int i,j,temp,low,high,mid;
for(i=1;i<len;i++){
temp=a[i];
low=0;high=i;
while(low<=high){
mid=(low+high)/2;
if(a[i]>a[mid]){
low=mid+1;
}
else if(a[i]<a[mid]){
high=mid-1;
}
else{
low=mid;
high=low-1;
}
}
for(j=i-1;j>=low;j--){
a[j+1]=a[j];
}
a[low]=temp;
}
}
#include <time.h>
#include <stdlib.h>
#define SIZE 10
void selection_sort(int a[],int len);
int main(){
int i;
int array[SIZE];
srand((int)time(NULL));
for(i=0;i<SIZE;i++){
array[i]=rand()%100;
}
selection_sort(array,SIZE);
for(i=0;i<SIZE;i++){
printf("%d\t",array[i]);
}
return 0;
}
void selection_sort(int a[],int len){
int i,j,temp,min;
for(i=0;i<len-1;i++){