69,373
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
void qsort(int a[], int x, int y);
int main()
{
int ncase, a[11], i;
while (1)
{
cout << "How many datas?" << endl;
cin >> ncase;
memset(a,0,sizeof(a));
cout << "Input your datas:" << endl;
while (ncase--)
{
cin >> i;
if(a[i] == 0)
a[i] = i;
a[i] += 10;
}
for (qsort(a, 0, 9), i = 0; i < 10; i++)
if (a[i] != 0)
cout << a[i]% 10 << " ";
cout << endl;
system("pause");
system("cls");
}
return 0;
}
void qsort(int a[], int x, int y)
{
int xx = x, yy = y;
int k = a[x];
if (x >= y) return ;
while (xx != yy)
{
while (xx < yy && a[yy] <= k)
yy--;
a[xx] = a[yy];
while (xx < yy && a[xx] >= k)
xx++;
a[yy] = a[xx];
}
a[xx] = k;
qsort(a, x, xx-1);
qsort(a, xx+1, y);
}
lst = '1 1 1 3 5 5 4 6'.split()
d = {}
for e in lst:
e = int(e)
if d.has_key(e):
d[e] += 1
else:
d[e] = 1
lst = sorted(d.items(),lambda x,y: x[0] - y[0],reverse = True)
print sorted(lst,lambda x,y: x[1] - y[1],reverse = True)
#include <stdio.h>
typedef struct _Digit{
int num;
int cnt;
} Digit;
void sort(Digit *d){
int i, j;
Digit t;
for(i = 0; i < 10 - 1; ++i)
for(j = 0; j < 10 - i - 1; ++j){
if(d[j].cnt < d[j+1].cnt || (d[j].cnt == d[j+1].cnt && d[j].num < d[j+1].num)){
t = d[j];
d[j] = d[j+1];
d[j+1] = t;
}
}
}
int main() {
Digit digit[10];
int i;
for(i = 0; i < 10; ++i){
digit[i].num = i;
digit[i].cnt = 0;
}
int n, num;
scanf("%d", &n);
while(n > 0){
scanf("%d", &num);
digit[num].cnt++;
--n;
}
sort(digit);
for(i = 0; i < 10; ++i)
if(digit[i].cnt)
printf("%d ", digit[i].num);
return 0;
}
// Map.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
typedef struct
{
int Myself;
int Record;
}HS;
void select_sort(int *x, int n)
{
int i, j, min, t;
for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/
{
min = i; /*假设当前下标为i的数最小,比较后再调整*/
for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/
{
if (*(x+j) < *(x+min))
{
min = j; /*如果后面的数比前面的小,则记下它的下标*/
}
}
if (min != i) /*如果min在循环中改变了,就需要交换数据*/
{
t = *(x+i);
*(x+i) = *(x+min);
*(x+min) = t;
}
}
};
int main(int argc, char* argv[])
{
HS H_S[10];
int Temp,i=0,HW[10]={0};
for(i=0;i<10;i++)
{
H_S[i].Myself=i;
H_S[i].Record=0;
}
printf("请输入5个0-9之间的数字:");
for (int m=0;m<5;m++)
{
scanf("%d",&Temp);
switch(Temp)
{
case 0:
H_S[0].Record++;
break;
case 1:
H_S[1].Record++;
break;
case 2:
H_S[2].Record++;
break;
case 3:
H_S[3].Record++;
break;
case 4:
H_S[4].Record++;
break;
case 5:
H_S[5].Record++;
break;
case 6:
H_S[6].Record++;
break;
case 7:
H_S[7].Record++;
break;
case 8:
H_S[8].Record++;
break;
case 9:
H_S[9].Record++;
break;
}
}
Temp=0;
for (i=0;i<10;i++)
{
if (H_S[i].Record==0)
continue;
else
{
HW[Temp]=H_S[i].Record*10+H_S[i].Myself;
Temp++;
}
}
select_sort(HW, Temp);
for(i=Temp-1;i>-1;i--)
{
printf("%d",(HW[i]%10));
}
return 0;
}