直接插入排序C语言实现
来源:互联网 发布:淘宝小二介入买家输 编辑:程序博客网 时间:2024/05/21 10:58
直接插入排序即是在要排序的数组中,假设前n-1(n>=2)个数已经是排好序的,现在要把第n个数插入到前n个已经排好序的数组中,使得这n个数也变成有序的,如此反复循环,使得要排序的数组中的最后一个元素也排好序,我们可以先假设第一个数是排好序的,然后第二个数和第一个数进行比较,如果第二个数比第一个数大,那么说明前两个数排好序,无需做调整,如果第二个数比第一个数小,那么就把第一个数向后移,将第二个数放在第一个数的位置上,抽象出来就是用a[i]和a[i-1]进行比较,如果a[i]>a[i-1],那么就说明前i个数是已经排好序的,如果a[i]<a[i-1],就让j=i-1,temp=a[i],然后一边将数据a[j]向后移动,一边向前搜索,直到找到a[j]<a[i]时停止,并将temp放到a[j+1]处即可。
具体代码实现如下:
- //直接插入排序
- #include<stdio.h>
- void insertsort(int a[],int n)
- {
- int i=0,temp=0,j=0;
- for(i=1;i<n;i++)
- {
- if(a[i]<a[i-1])
- { temp=a[i];
- for(j=i-1;j>=0&&a[j]>temp;j--)
- a[j+1]=a[j];
- a[j+1]=temp;
- }
- }
- for(i=0;i<n;i++)
- {
- printf("%4d",a[i]);
- }
- printf("\n");
- }
- int main()
- {
- int i=0,length=0;
- int a[]={2,6,1,8,4,0,5};
- length=sizeof(a)/sizeof(a[0]);
- //printf("%d",length);
- insertsort(a,length);
- return 0;
- }
- ///
- int main(int argc,char *argv[])
{
string str;
int i=0,j=0;
cin>>str;
char temp;
int len=str.length();
for(i=1; i<=len-1; i++){
int int_str1=str[i]-'0';
int int_str2=str[i-1]-'0';
if(int_str1<int_str2){
temp=str[i];
for(j=i-1; j>=0 &&(str[j]-'0')>(temp-'0');j--){
str[j+1]=str[j];
}
str[j+1]=temp;
}
}
cout<<str<<endl;
return 0;
}
阅读全文
0 0
- C语言实现直接插入排序
- 直接插入排序(C语言实现)
- 直接插入排序C语言实现
- C语言实现直接插入排序
- 直接插入排序算法--c语言实现
- 【算法】直接插入排序C语言实现
- C语言实现直接插入排序
- 数据结构 C语言实现直接插入排序
- 直接插入排序的c语言实现
- C语言实现直接插入排序
- 直接插入排序C语言实现
- 直接插入排序(C语言)实现
- (排序)用C语言实现的直接插入排序
- 排序之一:直接插入排序(C语言实现)
- C语言实现直接插入排序和希尔排序
- C语言 直接插入排序
- C语言实现冒泡和直接插入排序
- 数据结构之---C语言实现直接插入排序
- linux 下取进程占用 cpu/内存 最高的前10个进程
- Cvthin 细化算法的简化(LUT)
- IBM Cognos 11 简单Dashboard创建
- 理解WebKit和Chromium: Chromium WebView和Chrome浏览器渲染机制
- 网络传输数据格式XML、JSON、ProtoBuf
- 直接插入排序C语言实现
- cronolog配置tomcat和nginx日志分隔
- php项目权限系统设计
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Java核心技术点之集合框架
- 不可变类
- List中的泛型
- 洛谷 P2290 [HNOI2004]树的计数(bzoj[1211])
- ubuntu libnice编译测试