数据排序的几种方法(c语言实现)

/*
功能:用以下几种方法实现c语言中的常用排序
*/ 

#include "stdio.h"

void select_Sort1(int a[],int n);
void select_Sort2(int a[],int n);
void bubble_Sort(int a[],int n);
void insert_Sort(int a[],int n);
void quick_Sort(int a[],int low,int high);
int findpos(int a[],int low,int high);

int main()
{
	int a[10];
	int i;
	printf("please enter ten int number:\n");
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	//select_Sort2(a,10);
	//bubble_Sort(a,10);
	//insert_Sort(a,10);
	quick_Sort(a,0,9);
	printf("after sorted:\n");
	for(i=0;i<10;i++)
	{
		printf("%5d",a[i]);
	}
	return 0;
}

//第一种方法:选择排序法
//用一种较为容易理解的方法实现选择排序

void select_Sort1(int a[],int n)
{
	int i,j,k;
	//外部循环从小到大,依次找出各位置上的值(最后一个位置上的值除外,因为在循环的过程中各个位置上的值逐渐确定下来,最后一个值自然就确定了)
	for(i=0;i0;i--)
	{
		//内层循环对相邻的俩个数进行比较,大者冒泡到后边,ja[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t; 
			}
		}
	}
}

//第三种方法:插入法排序 

void insert_Sort(int a[],int n)
{
	int i,j,t;
	//外层循环的作用是从0位置开始逐渐从数组中将n个数拿出来,与已经排好的数进行比较,插入到适当的位置
	for(i=0;i=0;j--)
		{
			if(a[j+1]val)  
            high--;  
        a[low]=a[high];  
		//程序执行到这里后数列的排列顺序为13,38,65,13,50,此时low和high指针的位置并没有互换
		//指针从low开始,将其值(即13)与val进行比较,若小于val,就移动low指针向后,再次比较,若大于val的值就将该值覆盖high指针位置处的值
        while(low

//功能:归并排序,将俩个有序顺序表合并为一个有序顺序表。 
#include 
void mergesort(int a[],int n1,int b[],int n2); 

int main()
{
	int a[5]={0,2,4,6,8},b[5]={1,3,5,7,9};
	//合并俩表为一个有序表
	printf("mergesort\n");
	mergesort(a,5,b,5); 
	return 0;
}

//合并俩个表为一个有序表 ,归并排序 
void mergesort(int a[],int n1,int b[],int n2)
{
	int i,j,k;
	int c[10];
	i=j=k=0;
	//按照俩表数据元素从小到大的顺序放到第三个数组中
	while(i


 

你可能感兴趣的:(数据结构与算法)