今天复习了下数据结构,把其中的排序实现分享一下。
#include<stdio.h>
#include <stdlib.h>
void insetsort(int arr[],int len)
{
int i,j;
int key;
for(i=1;i<len;i++)
{
key = arr[i];
for(j=i-1;j>0&&arr[j]>key;j--)
{
arr[j+1] = arr[j];
}
arr[j+1] = key;
}
}
void bininsetsort(int arr[],int len)
{
int left,right,mid,key;
int i,j;
for(i=1;i<len;i++)
{
key = arr[i];
for(left=0,right=i-1;left<=right;)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
for(j=i-1;j>right;j--)
{
arr[j+1] = arr[j];
}
arr[right+1] = key;
}
}
void shellsort(int arr[],int len)
{
int step,key;
int i,j;
for(step=len/2;step>0;step/=2)
{
for(i=step;i<len;i++)
{
key = arr[i];
for(j=i-step;arr[j]>key&&j>=0;j-=step)
{
arr[j+step] = arr[j];
}
arr[j+step] = key;
}
}
}
void choicesort(int arr[],int len)
{
int i,j;
int max;
for(i=0;i<len-1;i++)
{
max = 0;
for(j=1;j<len-i;j++)
{
if(arr[max]<arr[j])
max = j;
}
if(max != len-i-1)
{
int tmp = arr[max];
arr[max] = arr[len-i-1];
arr[len-i-1] = tmp;
}
}
}
void bubblesort(int arr[],int len)
{
int i,j;
for(i=0;i<len-1;i++)
{
int swap = 0;
for(j=1;j<len-i;j++)
{
if(arr[j-1]>arr[j])
{
int tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
swap = 1;
}
}
if(!swap)
break;
}
}
void quickSorts(int arr[],int left,int right){
if(left>=right)
return;
int key = arr[left];
int i=left,j=right;
while(i<j){
while(i<j && arr[j]>=key) --j;
if(i<j) arr[i++] = arr[j];
while(i<j && arr[i]<=key) ++i;
if(i<j) arr[j--] = arr[i];
}
arr[i] = key;
quickSorts(arr,left,i-1);
quickSorts(arr,i+1,right);
}
void show(int arr[],int len)
{
printf("arr[%d]:\n",len);
for(int i=0;i<len;i++)
printf("%d,",arr[i]);
return;
}
#ifdef DBG
#error "error define"
#endif
#define DBG(fmt,args...) printf("==[%d]=="fmt,__LINE__,##args)
typedef int a[10];
typedef int b;
typedef b c;
#define print(x) x;x;x;x;x;
char *brr = "hello";
int fun(int *arr)
{
arr = brr;
printf("fun1111\n");
return;
}
int main ()
{
int arr[] = {1,4,76,3,5,33,88,92,100,3,6};
bubblesort(arr,sizeof(arr)/sizeof(int));
show(arr,sizeof(arr)/sizeof(int));
return (0);
}