插入排序—(时间复杂度为O(n*n))

插入排序是一种简单快速的排序算法,就是把一组无序的数据,以第一个数据为准,假设第一个数据是经过排序过的,把第二个数据和排好的数据进行比较,注意插入排序是从后向前进行比较,如果此时有一个新元素,则从已经排序的序列的尾部向前进行比较,如果排序过的序列的元素值大于新元素,则把新元素插入到该元素的前面。

/******************************************************************************
*
*   file name : 插入排序
*   author    : Wzy
*   data      : 2025/12/12
*   function  : 给定一个数组,数组里面存有10个随机整数,然后利用插入排序实现整数序列的升序排列,使用数组实现
*   note      : None
*
*   copyRight  (c)  2025    17630246607@163.com   All Right Reseverd
* ****************************************************************************/



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>



/******************************************************************************
*
*   func name    : InsertSort
*   function     : 实现插入排序
*   argument     : 
* 					@arr[10]:待排序的整形数组
* 					@arrsize:数组中元素的个数
*   retval       : None
*   author       : Wzy
*   date         : 2025/12/12
*   note         : 插入排序:是把无序序列中的元素依次插入到有序序列中,一般是从有序序列的尾部开始比较
* 
* ****************************************************************************/
#if 1
void InsertSort(int arr[],int arrsize)
{
	int temp = 0; //备份当前待插入元素的值
	int Current_prev = 0; //备份当前待插入元素的直接前驱的下标

	//1.可以假设把数组中的第一个元素作为有序序列的元素,剩下的元素作为无序序列
	for (int i = 1; i <arrsize ; ++i)
	{
		//2.备份当前待插入元素的值
		temp = arr[i];

		//3.把当前待插入元素和有序序列中的元素依次进行比较,剩下的元素为无序序列
		for (int j = i-1; j >= 0; j--)
		{
			//如果当前待插入元素的值 小于 待插入元素的直接前驱元素的值,则把待插入元素的直接前驱元素向后移
			if (temp < arr[j])
			{
				Current_prev = j; //备份当前待插入元素的直接前驱的下标
				arr[j+1] = arr[j];  //后移
			}
			else
			{
				//当前待插入元素的值 大于 待插入元素的直接前驱元素的值,则备份当前待插入元素的下标
				Current_prev = j+1;
				break;
			}
		}
		//4.把待插入元素插入到指定位置
		arr[Current_prev] = temp; 
	}

}
#endif


int main(int argc, char const *argv[])
{

    //定义一个整形数组存储10个整数
	int arr[] = {14,23,12,5,8,3,9,10,33,6,11};

	printf("排序前整数序列\n");
	for (int i = 0; i <sizeof(arr)/sizeof(arr[0]); ++i)
	{
		printf("%d ",arr[i]);
	}

	printf("\n");

	InsertSort(arr,sizeof(arr)/sizeof(arr[0]));

	printf("排序后整数序列\n");
	for (int i = 0; i <sizeof(arr)/sizeof(arr[0]); ++i)
	{
		printf("%d ",arr[i]);
	}

	printf("\n");

	return 0;
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇