本文章的代码使用jetbrains公司旗下的的Clion编写,操作系统位macOS Ventura(13.2.1). 代码没有在dev-c++测试过(dev-c++可能会有相关的空格问题)
//
// Created by 魏志杰 on 2023/7/25.
//
#include "stdio.h"
#define Max 100
#define before printf("排序前")
#define after printf("排序后")
#define newline printf("\n")
#define print printf("%6d", R[i].key)
#define printA printf("%6d",A[i])
#define Array int A[]={5,7,2,5,9,6,-42,1,67,2,3};
typedef struct {
int key;
int data;
}SqType;
//选择排序的基本思路是:每步从待排序的元素中获取关键字最小的元素,按顺序排放在已经排列好的元素的后面
void select(SqType R[] ,int n){
int i,j,k;
SqType tmp;
for(i=0;i<n-1;i++){
k=i;
for (j= i+1; j < n; j++)
if (R[j].key<R[k].key)
k=j;
if (k !=i ){
tmp=R[i];
R[i]=R[k];
R[k]=tmp;
}
}
}
void select_1(int A[],int n){
for (int i = 0; i < n-1; i++) {
int minIndex=i; //记录最小索引
for (int j = i+1; j < n; j++) {
if (A[j]<A[minIndex]){
minIndex=j; //更新索引
}
}
//交换当前最小位置与当前末排序部分的第一个元素交换位置
int temp=A[i];
A[i]=A[minIndex];
A[minIndex]=temp;
}
}
int main(){
SqType R[Max];
Array;
for (int i = 0; i < 10; i++)
R[i].key = A[i];
before;
for (int i = 0; i < 10; i++)
print;
newline;
select(R,10);
after;
for (int i = 0; i < 10; i++)
print;
newline;
select_1(A,10);
after;
for (int i = 0; i < 10; i++)
printA;
}
代码结果如下
标签:int,简单,c++,选择,SqType,printf,排序,define From: https://www.cnblogs.com/xiaozhounandu/p/17580481.html