程序算法艺术与实践:稀尔排序、冒泡排序和快速排序

稀尔排序:

//希尔排序
#include <iostream>
#include <stdio.h>

void ShellSort( int* data, int left, int right){
	int len = right-left +1;
	int d =len;
	while (d>1){
	  d =(d+1)/2;
	  for(int i =left; i<right+1-d;i++){
	    if(data[i+d]<data[i]){
		int tmp = data[i+d];
		data[i+d] = data[i];
		data[i] =tmp;
	      }
	   }
	}
}

void  ShellSort2( int *data, int len){
	int d =len;
	while (d>1){
          d =(d+1)/2;
	  for(int i =0; i<len-d;i++){
	    if(data[i+d]<data[i]){
		int tmp = data[i+d];
		data[i+d] = data[i];
		data[i] =tmp;
            }
	  }
	for( int i=0; i<10;i++)
	   printf("%5d", data[i]);
	printf("\n");
	}
}

int main( )
{
	int list[10];
	int n=9;
	int m=0;
	
	printf(" Input 10 number: ");
	for(int i=1; i<10;i++)
		scanf("%d",&list[i]);
	printf("\n");
	ShellSort2(list,10);
	//ShellSort(list,0,9);
	printf("\n");
	for(int i=0; i<10;i++)
		printf("%5d",list[i]);
	printf("\n");
}

冒泡排序:

//冒泡排序
#include <iostream>
#include <stdio.h>

void BubbleSort( int *list)
{
	int temp;
	for(int i=0;i<9;i++)
		for(int j=0; j<9-i; j++){
			if(list[j]>list[j+1])
			{
				temp =list[j];
				list[j] =list[j+1];
				list[j+1] =temp;
			}
		}
}

int main( )
{
	int list [10];
	int n=9,m=0;
	printf(" Input 10 number: ");
	for( int i=0 ; i<10;i++)
		scanf("%d",&list[i]);
	printf("\n");
	BubbleSort(list);
	for(int i =0;i<10;i++)
		printf("%5d",list[i]);
	printf("\n");
}

快速排序算法:

//快速排序算法

#include  <iostream>
#include <stdio.h>

void improveqsort (int *list, int m, int n)
{
	int k,t,i,j;
	/*
	for(int i =1; i<10;i++)
	printf("%3d",list[i]);
	*/
	if(m<n)
	{
		i =m;
		j=n+1;
		k=list[m];
		while(i<j)
		{
			for(i =i+1;i<n;i++)
				if(list[i]>=k)
					break;
			for(j=j-1;j>m;j--)
				if(list[j]<=k)
					break;
			if(i<j)
			{
				t =list[i];
				list[i]=list[j];
				list[j] =t;
			}
		}
		t =list[m];
		list[m]=list[j];
		list[j]=t;
		improveqsort(list,m,j-1);
		improveqsort(list,i,n);
	}
}

int main()
{
	int list[10];
	int n=9;
	int m=0;
	int i;
	printf(" Input 10 number: ");
	for( i=0;i<10;i++)
		scanf("%d",&list[i]);
	printf("\n");
	improveqsort(list,m,n);
	for(i=0;i<10;i++)
		printf("%5d",list[i]);
	printf("\n");
}


关于程序算法艺术与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.


你可能感兴趣的:(程序算法艺术与实践:稀尔排序、冒泡排序和快速排序)