diff --git a/README.md b/README.md new file mode 100644 index 0000000..6b4bfa5 --- /dev/null +++ b/README.md @@ -0,0 +1,338 @@ +# Data-Structure-And-Algorithm +Data Structure And Algorithm(常用数据结构与算法C/C++实现) +# DataStructutres-Project +------------Sorting Algo with coding------- +1) Bubble Sort +2) Insertion Sort +3) Selection Sort +4) Quick Sort +5) Merge Sort +6) Count Sort +7) Radix sort +8) Bucket/Bin Sort +9) Shell Sort + +-----Bubble Sort----------- +#include + +void swap(int *x,int *y) +{ + int temp; + temp=*x; + *x=*y; + *y=temp; +} + +void BubbleSort(int arr[],int n) +{ + int i,j,flag; + for(i=0;iarr[j+1]){ + swap(&arr[j],&arr[j+1]); + flag=1; + } + } + if(flag==0) + break; + } +} + +void main() +{ + int i; + int arr[]={7,2,4,3,2,1,2}; + + BubbleSort(arr,7); + + for(i=0;i<7;i++) + printf("%d\n",arr[i]); +} + + +----Insertion Sort--------- +void InsertionSort(int arr[],int n) +{ + int i,j,temp; + for(i=1;i=0 && arr[j]>temp) + { + arr[j+1]=arr[j]; + j--; + } + arr[j+1]=temp; + } +} + + +void main() +{ + int i; + int arr[]={8,5,3,7,2}; + + InsertionSort(arr,5); + + for(i=0;i<5;i++) + printf("%d\n",arr[i]); +} + +---Selection Sort------ +#include +void swap(int *x,int *y) +{ + int temp; + temp=*x; + *x=*y; + *y=temp; +} + + +void selectionSort(int arr[],int n) +{ + int i,j,min; + for(i=0;i + +int partition(int arr[],int start,int end) +{ + int x=(rand()%(end-start+1))+start; //for pick randome element + int pindex=start,i,temp; + + temp=arr[end]; //swap(arr[x],arr[end]) + arr[end]=arr[x]; + arr[x]=temp; + + int pivote=arr[end]; + for(i=start;is) + { + pindex=partition(arr,s,e); + QuickSort(arr,s,pindex-1); + QuickSort(arr,pindex+1,e); + } +} + +void main() +{ + int i; + int arr[]={7,2,1,6,8,3,4}; + + QuickSort(arr,0,6); + + for(i=0;i<7;i++) + printf("%d\n",arr[i]); +} + +---Merge Sort--- +#include +void MergeSort(int arr[],int start,int end) +{ + int mid; + if(end>start) + { + mid=(start+end)/2; + MergeSort(arr,start,mid); + MergeSort(arr,mid+1,end); + Merge(arr,start,end,mid); + } +} + +void Merge(int arr[],int s,int e,int mid) +{ + int n1=(mid-s)+1; //size of left array + int n2=e-mid; //size of right array + int L[n1],R[n2]; //creating left and right array + int i,j,k; + for(i=0;i + +int maxEle(int arr[],int n) +{ + int i,max=arr[0]; + for(i=1;imax) + max=arr[i]; + } + return max; +} + +void countSort(int arr[],int n) +{ + int output[n]; + int max=maxEle(arr,n); + int count[max+1]; + int i; + + for(i=0;i<=max;i++) + count[i]=0; + + for(i=0;i=0;i--) + output[--count[arr[i]]]=arr[i]; + + for(i=0;i +int maxEle(int arr[],int n) +{ + int i,max=arr[0]; + for(i=1;imax) + max=arr[i]; + } + return max; +} + +void countSort(int arr[],int n,int temp) +{ + int output[n]; + int count[10]; + int i; + + for(i=0;i<10;i++) + count[i]=0; + + for(i=0;i=0;i--) + output[--count[(arr[i]/temp)%10]]=arr[i]; + + for(i=0;i0;temp=temp*10) + { + countSort(arr,n,temp); + } +} + +void main() +{ + int i; + int arr[]={212,107,150,25,5,2,99,160,45}; + radixSort(arr,9); + printf("After performing sorting:\n"); + for(i=0;i<9;i++) + printf("%d\n",arr[i]); +} + +---Shell Sort---- + + + + + + + + +