0
点赞
收藏
分享

微信扫一扫

插入排序你会吗?一起上路吧

伢赞 2022-04-28 阅读 59
c语言

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;
	}

	

 到此就结束了,希望能得到大家的支持

举报

相关推荐

0 条评论