插入,归并,快速,冒泡,shell,选择排序 用c实现
来源:互联网 发布:淘宝管控记录违规记录 编辑:程序博客网 时间:2024/06/06 09:18
插入:
#include<stdio.h>
int main(){
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j,k;
for( i=1;i < 10;i++)
{
k = a[i];
for(j=i-1;a[j] > k && j > -1; j--)
{
a[j+1] = a[j];
}
a[j+1] = k;
}
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
归并:
#include<stdio.h>
void hebing(int *a,int start,int mid,int end);
void guibing_sort(int *a, int start, int end)// 排序
{
int mid;
if(start < end)
{
mid = (start + end)/2;
guibing_sort(a,start,mid);
guibing_sort(a,mid+1,end);
hebing(a,start,mid,end);
}
}
//合并
void hebing(int *a,int start,int mid,int end)
{
int s1 = mid - start + 1;
int s2 = end - mid;
int left[s1];
int right[s2];
int i,j,k;
for(i = 0; i < s1; i++)
{
left[i] = a[start + i];
}
for(i = 0; i < s1; i++)
{
right[i] = a[mid + 1 + i];
}
i = 0;j = 0;k = start;
while(i < s1 && j < s2)
{
if(left[i] < right[j])
{
a[k++] = left[i++];
}
else
{
a[k++] = right[j++];
}
}
while(i < s1)
{
a[k++] = left[i++];
}
while(j < s2)
{
a[k++] = right[j++];
}
}
int main()
{
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j;
guibing_sort(a,0,9);
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
快速:
#include<stdio.h>
void quick(int *a,int i,int j)
{
int m,n,temp;
int k;
m=i;
n=j;
k=a[(i+j)/2]; /*选取的参照*/
do
{
while(a[m]<k&&m<j) m++; /* 从左到右找比k大的元素*/
while(a[n]>k&&n>i) n--; /* 从右到左找比k小的元素*/
if(m<=n)
{ /*若找到且满足条件,则交换*/
temp=a[m];
a[m]=a[n];
a[n]=temp;
m++;
n--;
}
}while(m<=n);
if(m<j) quick(a,m,j); /*运用递归*/
if(n>i) quick(a,i,n);
}
int main()
{
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j;
quick(a,0,9);
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
冒泡:
#include<stdio.h>
int main()
{
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j;
for( i=0;i < 9;i++)
{
for(j=0;j < 9-i; j++)
{
if(a[j] > a[j+1])
{
a[j] ^= a[j+1];
a[j+1] ^= a[j];
a[j] ^= a[j+1];
}
}
}
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
shell:
#include<stdio.h>
/*分shell法
* shell法是一个叫 shell 的美国人与1969年发明的。
* 它首先把相距k(k>=1)的那几个元素排好序,再缩小k值(一般取其一半),
* 再排序,直到k=1时完成排序。下面让我们来分析其代码
*
*/
void shell(int *a,int n)
{
int i,j,k,x;
k=n/2; /*间距值*/
while(k>=1)
{
for(i=k;i<n;i++)
{
x=a[i];
j=i-k;
while(j>=0&&x<a[j])
{
a[j+k]=a[j];
j-=k;
}
a[j+k]=x;
}
k/=2; /*缩小间距值*/
}
}
int main()
{
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j;
shell(a,9);
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
选择:
#include<stdio.h>
int main()
{
int a[10] = {1,5,2,3,8,9,7,0,4,4};
int i,j,k;
for( i=0;i < 9;i++)
{
k = i;
for(j = i+1;j < 10; j++)
{
if(a[k] > a[j])
{
k = j;
}
}
if(k != i)
{
a[k] ^= a[i];
a[i] ^= a[k];
a[k] ^= a[i];
}
}
for(i = 0; i< 10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
- 插入,归并,快速,冒泡,shell,选择排序 用c实现
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- C 各种排序(选择/冒泡/快速/插入/希尔/归并/堆)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 冒泡,插入,选择,归并,快速排序的C++实现
- js实现冒泡、选择、插入、归并、快速排序算法
- 插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序
- 冒泡、选择、插入、归并、快速排序代码
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- c语言简单实现 冒泡,插入,选择,归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比
- 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- C++实现冒泡排序,选择排序,插入排序,快速排序,归并排序
- 选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序完整C++实现
- 内排序(插入排序、冒泡排序、选择排序、shell排序、快速排序、归并排序、堆排序)
- matplotlib显示中文
- [noip2016]天天爱跑步 题解
- jsp
- CCPC 2016 Final 【solve 6 of 12】
- Backbone路由添加切换之前与之后的方法
- 插入,归并,快速,冒泡,shell,选择排序 用c实现
- 高并发-缓存
- 关于游戏中“追求线”浅析
- Git基本命令
- java海量大文件数据处理方式
- 16秋计算机科学与技术鲁嘉华数组作业
- Ubuntu系统实用软件推荐
- Retrofit简单使用(Kotlin)
- Linux教程【9】-用户管理命令