选择排序—(时间复杂度为O(n*n))

选择排序的主要动作就是“选择”,排序原理其实就是从未排序的数列找到最小的元素,放在已排序数列的开始位置,然后再从未排序的数列找到最小的元素,然后再放置已排序数列的末尾

/******************************************************************************
*
*   file name : 选择排序
*   author    : Wzy
*   data      : 2025/12/15
*   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    : SelectionSort
*   function     : 实现选择排序
*   argument     : 
* 					@arr[10]:待排序的整形数组
* 					@arrsize:数组中元素的个数
*   retval       : None
*   author       : Wzy
*   date         : 2025/12/15
*   note         : 选择排序的主要动作就是“选择”,从序列中找到一个最小值元素,把最小值元素放在整个序列的首部,重复n轮,直到整个序列有序
* 
* ****************************************************************************/
#if 1
void SelectionSort(int arr[],int arrsize)
{
	int min = 0; //记录最小值元素的下标
	int temp = 0;  //记录最小值元素的值

	//1.需要比较n轮,每轮找到序列的最小元素
	for (int n = 0; n < arrsize - 1; ++n) //从第0轮开始,需要比较arrsize-1轮
	{
		min = n;//假设每轮未排序序列的第一个元素是最小值元素

		//找到序列中的最小元素的下标
		for (int m = n+1; m < arrsize; ++m)
		{
			//每轮需要通过比较的方式才可以确定最小值
			if (arr[min] > arr[m])
			{
				min = m; //更新当前的最小值元素的下标
			}

		}
		//找到最小值元素,需要把最小值元素和未排序序列的首元素进行交换
		temp   = arr[min];
		arr[min] = arr[n];
		arr[n] = 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");

	SelectionSort(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
小恐龙
花!
上一篇
下一篇