insertionsort
(欢迎前来评论,交流,不足之处,大家一起商讨,狗头)
插入排序的主要思想就是见字明义,将一个数字插入到该数组当中,但前提是遍历整个数组,所以,就只有两种方法了,插在最后,插在最前面,我下面将会一一为大家展示完整代码。
1.插在最前面
首先要明确遍历进行次数,即为数组的长度,由用户输入数组的长度,其次遍历n次,由于插在最前缘故,代码应该这样写
void insertionsort(int arr[],int len)
{
for(int i=0;i<len;i++)//遍历数组中的元素
{
for(int j=i;j>0&&arr[j]<arr[j-1];j--)
{
swap(arr,j,j-1);//满足条件的进行交换
}
}
}
第二种方法就是改变j的遍历规律
for(j=len;j>0&&arr[j]<arr[j-1];j--)
交换函数代码如下:
void swap(int arr[],int posx,int posy){
int temp=arr[posx];
arr[posx]=arr[posy];
arr[posy]=temp;
}
最后完整ae代码
//insert a number
#include<iostream>
using namespace std;
void swap(int arr[],int posx,int posy){
int temp=arr[posx];
arr[posx]=arr[posy];
arr[posy]=temp;
}
void insertionsort(int arr[],int n){
for(int i=0;i<n;++i){
for(int j=i;j>0,arr[j]<arr[j-1];--j){
swap(arr,j,j-1);
}
}
}
int main(){
int arr[100],i,j,len;
cout<<"输入排序数组长度:";
while(cin>>len){
cout<<"输入排序数组:";
for(i=0;i<len;i++){
cin>>arr[i];
}
//接下来开始排序
insertionsort(arr,len);
cout<<"输出排序数组:";
for(i=0;i<len;i++)
cout<<arr[i]<<" ";
}
return 0;
}
到此就结束了,希望能得到大家的支持