数据结构-排序

为给定的数组按照升序进行排序,排序过程中,不定义新的数组,用插入的方式实现

/*************************************************************************
*
* 设计升序排序的接口
*
*
*author:jindouliu2024@163.com 
*date:2025.4.8
*
* Copyright (c)  2024-2025   jindouliu2024@163.com   All right Reserved
* ************************************************************************/
#include<stdio.h>
void swap(int buf[],int bufsize)
{
	int data;
	//假定第一个元素的值是最小的,从第二个元素开始遍历
	for(int i=1;i<bufsize;i++){
		//判断当前元素是否比前边已经排好的元素值小,小的话交换
		for(int j=i-1 ; j >=0  ;j--  ){
			if(buf[j+1]<buf[j]){
				data  = buf[j+1];
				buf[j+1] = buf[j];
				buf[j] = data;
			}
		}
		
	}
	for(int i=0;i<bufsize;i++){
		printf("%3d",buf[i]);
	}
	
}
int main()
{
	int buf[10] = {2,5,8,34,56,23,12,9,6,11};
	swap(buf,sizeof(buf)/sizeof(buf[0]));
	
	return 0;
}
#include<stdio.h>
void swap(int buf[],int bufsize)
{
	int data,j;
	//假定第一个元素的值是最小的,从第二个元素开始遍历
	for(int i=1;i<bufsize;i++){
		data = buf[i];
		//判断当前元素是否比前边已经排好的元素值小,小的话交换
		for(j=i-1 ; j >=0  ;j--  ){
			// if(buf[j+1]<buf[j]){
			// 	data  = buf[j+1];
			// 	buf[j+1] = buf[j];
			// 	buf[j] = data;
			// }
			if(buf[j]>data){
			 	buf[j+1] = buf[j];

			 }
			else{
				break;
			}
			buf[j] = data;
		}

		
	}
	for(int i=0;i<bufsize;i++){
		printf("%3d",buf[i]);
	}
	
}
int main()
{
	int buf[10] = {2,5,8,34,56,8,12,9,6,11};
	swap(buf,sizeof(buf)/sizeof(buf[0]));
	
	return 0;
}

只进行一次插入,当遍历到该放入的元素的位置的时候,在进行插入

#include<stdio.h>
void swap(int buf[],int bufsize)
{
	int data,current;
	//假定第一个元素的值是最小的,从第二个元素开始遍历
	for(int i=1;i<bufsize;i++){
		data = buf[i];
		//判断当前元素是否比前边已经排好的元素值小,小的话交换
		for(int j=i-1 ; j >=0  ;j--  ){
			// if(buf[j+1]<buf[j]){
			// 	data  = buf[j+1];
			// 	buf[j+1] = buf[j];
			// 	buf[j] = data;
			// }
			if(buf[j]>data){
				current=j;
			 	buf[j+1]  = buf[j];

			 }
			else{
				current = j+1;
				break;
			}
			
		}
		buf[current] = data;
		
	}
	for(int i=0;i<bufsize;i++){
		printf("%3d",buf[i]);
	}
	
}
int main()
{
	int buf[10] = {2,5,0,34,56,8,12,9,6,11};
	swap(buf,sizeof(buf)/sizeof(buf[0]));
	
	return 0;
}

来源链接:https://www.cnblogs.com/lradian/p/18815366

请登录后发表评论

    没有回复内容