### 稀尔排序:
~~~
//希尔排序
#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");
}
~~~
关于[程序算法艺术与实践](http://blog.csdn.net/column/details/tac-programalgrithm.html)更多讨论与交流,敬请关注本博客和新浪微博[songzi_tea](http://weibo.com/songzitea).
- 前言
- 螺旋矩阵、螺旋队列算法
- 程序算法艺术与实践:稀尔排序、冒泡排序和快速排序
- Josephu 问题:数组实现和链表实现
- 杨辉三角形算法
- 位图排序
- 堆排序的实现
- Juggling算法
- 【编程珠玑】排序与位向量
- 取样问题
- 变位词实现
- 随机顺序的随机整数
- 插入排序
- 二分搜索
- 产生不重复的随机数
- 约瑟夫环解法
- 快速排序
- 旋转交换或向量旋转
- 块变换(字符反转)
- 如何优化程序打印出小于100000的素数
- 基本的排序算法原理与实现
- 利用马尔可夫链生成随机文本
- 字典树,后缀树
- B-和B+树
- 程序算法艺术与实践引导
- 程序算法艺术与实践:基础知识之有关算法的基本概念
- 程序算法艺术与实践:经典排序算法之桶排序
- 程序算法艺术与实践:基础知识之函数的渐近的界
- 程序算法艺术与实践:递归策略之矩阵乘法问题
- 程序算法艺术与实践:递归策略之Fibonacci数列
- 程序算法艺术与实践:递归策略基本的思想
- 程序算法艺术与实践:经典排序算法之插入排序
- 程序算法艺术与实践:递归策略之递归,循环与迭代