C语言插入排序
2023-12-22 00:34:15
插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入已经排好序的部分,逐步构建有序序列。插入排序的工作原理类似于整理扑克牌的过程,不断将手中的牌插入到已经有序的牌序中。
具体来说,插入排序的步骤如下:
- 从第一个元素开始,该元素可以认为已经被排序。
- 取出下一个元素,在已经排序的元素序列中从后向前扫描。
- 如果已排序的元素大于新元素,则将该元素移到下一位置。
- 重复步骤 3,直到找到已排序的元素小于或等于新元素的位置。
- 将新元素插入到该位置后。
- 重复步骤 2~5,直到整个序列都被排好序。
以下是插入排序的升序和降序的实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//升序
void insertqort(int* a, int len)
{
int temp = 0;
for (int i = 1; i < len; i++)
{
if (a[i - 1] > a[i])
{
int temp = a[i];
int j = i - 1;
for (; j >= 0 && a[j] > temp; j--)
{
a[j + 1] = a[j];//后移动
}
a[j + 1] = temp;
}
}
}
//降序
void seletqort(int* a, int len)
{
for (int i = 0; i < len; i++)
{
int max = i;
for (int j = i + 1; j < len; j++)
{
if (a[j] > a[max])
{
max = j;
}
}
if (i != max)
{
int tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}
}
}
int main()
{
int a[4];
for (int i = 0; i < 4; i++)
{
scanf("%d", &a[i]);
}
seletqort(a, 4);
//insertqort(a, 4);
for (int i = 0; i < 4; i++)
{
printf("%d ", a[i]);
}
return 0;
}
?
文章来源:https://blog.csdn.net/luosuss/article/details/135141944
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!