C语言程序 排序----归并排序

作者:滴水穿石 | 创建时间: 2023-07-16
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)....
C语言程序 排序----归并排序

操作方法

ubuntu 14.04 linux c gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2

#include <stdio.h> #include <stdlib.h> #define DATA_SIZE 10 void merge_array(int array[],int first,int mid,int last,int temp[]) { int i = first,j=mid+1,k=0; while(i <= mid && j <= last) { if(array[i] <= array[j]) { temp[k++] = array[i++]; } else temp[k++] = array[j++]; } while(i <= mid) temp[k++] = array[i++]; while(j <= last) temp[k++] = array[j++]; for(i=0;i< k;i++) array[first+i] = temp[i]; } void merge_sort(int data[],int first,int last,int temp[]) { int i = 0; if(first < last) { int mid = (first+last)/2; merge_sort(data,first,mid,temp); merge_sort(data,mid+1,last,temp); merge_array(data,first,mid,last,temp); } } int main() { int data[DATA_SIZE],i =0; int temp[DATA_SIZE]; printf("the original data seq :\n"); for(i = 0;i < DATA_SIZE;i++) { data[i] = rand() % 100; printf("%d,",data[i]); } printf("\n"); merge_sort(data,0,9,temp); printf("after merge sort the seq :\n"); for(i = 0;i < DATA_SIZE;i++) printf("%d,",data[i]); printf("\n"); return 0; }

xxx@linux:~/code# gcc -o merge_sort merge_sort.c xxx@linux:~/code# ./merge_sort the original data seq : 83,86,77,15,93,35,86,92,49,21, after merge sort the seq : 15,21,35,49,77,83,86,86,92,93,

点击展开全文

更多推荐