69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
typedef struct arr{
int elem; /*元素值*/
int index; /*下标值*/
} ARR;
/*交换元素*/
void replace(ARR* a, ARR* b)
{
ARR temp;
temp.elem = a->elem;
temp.index = a->index;
a->elem = b->elem;
a->index = b->index;
b->elem = temp.elem;
b->index = temp.index;
}
/*按元素值对数组进行选择排序*/
void sort(ARR a[], int n)
{
int k, index, i;
for(k = 0; k < n - 1; k++) {
index = k;
for(i = k + 1; i < n; i++) {
if(a[i].elem <a[index].elem) {
index = i;
}
}
if(index != k) {
replace(&a[k], &a[index]);
}
}
}
/*为数组元素赋值*/
void input(ARR a[],int len)
{
int i=0;
for(; i < len; i++) {
scanf("%d", &a[i].elem);
a[i].index = i;
}
}
/*打印输出下标值*/
void display(ARR a[],int len)
{
int i = 0;
for(; i < len; i++)
printf("%d ", a[i].index);
printf("\n");
}
/*测试*/
int main()
{
int i, n;
ARR *a;
scanf("%d", &n);
a = (ARR *)malloc(n*sizeof(ARR));
input(a, n);
sort(a, n);
display(a, n);
free(a);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef struct arr{
int elem; /*元素值*/
int index; /*下标值*/
} ARR;
void sort(ARR a[], int n)
{
int k, index, i;
int lv,sn, mv, mi;
lv=0x7fffffff;sn=1;
for(k = 0; k < n; k++) {
mv=0x7fffffff;mi=-1;
for(i=0;i<n;i++){
if(a[i].index == 0){
if(a[i].elem <= mv){
mv=a[i].elem;
mi=i;
}}}
sn+=(mv>lv);
a[mi].index = sn;
lv=mv;
}
}
/*为数组元素赋值*/
void input(ARR a[],int len)
{
int i=0;
for(; i < len; i++) {
scanf(" %d", &a[i].elem);
a[i].index = 0;
}
}
/*打印输出下标值*/
void display(ARR a[],int len)
{
int i = 0;
for(; i < len; i++)
printf("%d ", a[i].index);
printf("\n");
}
/*测试*/
int main()
{
int i, n;
ARR *a;
scanf("%d", &n);
a = (ARR *)malloc(n*sizeof(ARR));
input(a, n);
sort(a, n);
display(a, n);
free(a);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef struct arr{
int elem; /*元素值*/
int index; /*下标值*/
int sq; /*排序号*/
} ARR;
/*交换两个结构体元素*/
void replace(ARR* a, ARR* b)
{
ARR temp;
temp.elem = a->elem;
temp.index = a->index;
a->elem = b->elem;
a->index = b->index;
b->elem = temp.elem;
b->index = temp.index;
}
/*按值大小对结构体数组进行排序, 并对数组元素进行编号*/
void sort(ARR a[], int n)
{
int k, index, i;
int j = 1;
for(k = 0; k < n - 1; k++) {
index = k;
for(i = k + 1; i < n; i++) {
if(a[i].elem <a[index].elem) {
index = i;
}
}
if(index != k) {
replace(&a[k], &a[index]);
}
}
/*按值大小对数组元素进行编号*/
for(i = 0; i < n; i++) {
while(a[i].elem==a[i+1].elem && i < n) {
a[i].sq = j;
a[i+1].sq = j;
i++;
}
if(i < n) {
a[i].sq = j;
}
j++;
}
}
/*输入*/
void input(ARR a[],int len)
{
int i=0;
for(; i < len; i++) {
scanf("%d", &(a[i].elem));
a[i].index = i;
}
}
/*打印输出*/
void display(ARR a[],int len)
{
int i = 0;
int j = 0;
for(; i < len; i++) {
for(j = 0; j < len; j++) {
if(i == a[j].index) {
printf("%d ", a[j].sq);
}
}
}
printf("\n");
}
/*测试*/
int main()
{
int i, n;
ARR *a;
scanf("%d", &n);
a = (ARR *)malloc(n*sizeof(ARR));
input(a, n);
sort(a, n);
display(a, n);
free(a);
return 0;
}