C/C++10大算法之插入排序
来源:互联网 发布:阿里云企业备案表 编辑:程序博客网 时间:2024/06/05 06:00
插入排序适用于小规模排序,其原理:
设下标0,即Array[0]为已排好序的子列,从数组下标1,即第二个元素Array[1]开始,依次与子列相比较,直到当前的排序元素小于子列的元素不成立(小于则交换位置),就结束当前排序,进入下一次排序,直到子列长度等于数组长。伪代码:
for (int i =1; i < Length; ++i)
temp = Array[i];
for (int j = i - 1; j >= 0;--j)
if (Array[j]>temp)
Array[j + 1] = Array[j];
Array[j] = temp;
具体实现:
//插入排序.cpp:定义控制台应用程序的入口点。
//作者Hecker.ShengTao.Tan
#include"stdafx.h"
#include<stdlib.h>
#include<iostream>
#include<time.h>
#include<windows.h>
#defineMAX10
void Output(intArray[],intLength){
printf("\n");
for(inti = 0; i < Length; ++i){
printf("%d ",Array[i]);
}
printf("\n\n");
}
void Output1(intArray[],intLength,intvalue){
printf("\n");
for(inti = 0; i < Length; ++i){
if(Array[i]==value){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_GREEN);
printf("%d ",Array[i]);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
}
else{
printf("%d ",Array[i]);
}
}
printf("\n\n");
}
void Ran_Array(intArray[],intLength){
srand((unsigned)time(NULL));
for(inti = 0; i < Length; ++i){
Array[i]= rand() % 100;
if(i>0&&Array[i]==Array[i-1]){
Array[i]= rand() % 100;
}
}
}
int Insert_Sort(intArray[],intLength){
inttemp =NULL;
for(inti = 1; i < Length; ++i){
temp= Array[i];
printf("\n\n第%d次排序:\n",i);
printf("此时:Array[i]=%d\n",Array[i]);
for(intj = i - 1; j >= 0;--j){
if(Array[j]>temp){
printf("此时:Array[j]=%d\n",Array[j]);
Array[j+ 1] =Array[j];
Array[j]= temp;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
Output1(Array,Length,temp);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_RED |FOREGROUND_BLUE);
}
}
}
return1;
}
int main(){
intArray[MAX];
intLength =MAX;
Ran_Array(Array,Length);
printf("排序前:\n");
Output(Array,Length);
Insert_Sort(Array,Length);
printf("排序完成\n");
printf("排序后:\n");
Output(Array,Length);
system("pause");
return1;
}
- C/C++10大算法之插入排序
- 算法之排序算法:插入排序(C++)
- C排序算法之插入排序
- 排序算法之插入排序 (C语言)
- C语言之排序算法---插入排序
- C--经典算法之排序---插入排序
- c语言排序算法之插入排序
- 算法导论 之 插入排序[C语言]
- 算法之插入排序【C语言】
- C之插入排序
- C/C++程序员:基本排序算法之插入排序
- 常用排序算法之插入排序c及lua实现
- C语言排序算法实现之插入排序
- 排序算法之插入排序(C语言实现)
- 算法 - 插入排序(C#)
- C语言算法--插入排序
- C/C++之一步一步写算法之《插入排序法》
- 十大排序算法之插入排序
- Android剪裁Uri
- thinkphp3.2.3 sql操作
- Unity 武器拖尾效果
- Angular快速入门4---组件化入门篇1
- js对象取值方式
- C/C++10大算法之插入排序
- yum install kubernetes 提示docker冲突失败问题
- input只能输入数字
- spring4学习记录06-spring mvc实战之spring-data-jpa使用说明
- 基于TCP的聊天系统
- Environment.SpecialFolder 与App有关的枚举常量分别对应哪个文件夹?
- 设计模式之模板方法模式
- android中的线程池
- linux exercise14