开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4730|回复: 3
收起左侧

[C#作业] 第十四天作业

[复制链接]
发表于 2019-4-18 15:57:19 | 显示全部楼层 |阅读模式   广东省揭阳市
本帖最后由 老郭 于 2019-4-18 16:43 编辑

今日学习内容:

14.1 简单排序算法练习 - 冒泡排序
14.2 简单排序算法练习 - 选择排序
14.3 简单排序算法练习   插入排序
14.4 IComparable接口_与_IComparer接口

今日作业:

  1. 实现下列集合的冒泡排序 选择排序 与 插入排序

    List list = = new List{33,22,1,7,66,48,95,93,92,91,46};

  2. 设计一个Student类 每个学生 都有 语文 数学 英语 成绩,请实现学生平均成绩升序排序
    (注:请使用IComparable接口实现)

发表于 2019-6-7 23:45:17 | 显示全部楼层   湖南省长沙市

今日作业:
实现下列集合的冒泡排序 选择排序 与 插入排序
List list = = new List{33,22,1,7,66,48,95,93,92,91,46};
设计一个Student类 每个学生 都有 语文 数学 英语 成绩,请实现学生平均成绩升序排序
(注:请使用IComparable接口实现)


  • 冒泡排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 冒泡排序 {
    class Program {
        static void Main (string[] args) {
            List<int> intlist = new List<int> ();
            Random random = new Random ();
            for (int i = 0; i < 20; i++) {
                intlist.Add (random.Next (1, 101));
            }
            ShowListItrms (intlist);
            BubbleSort (intlist);

        }
        //冒泡排序
        static void BubbleSort (IList<int> list) {
            // for (int i = 0; i < list.Count; i++) {
            //     for (int j = 0; j < list.Count - 1 - i; j++) {
            //         if (list[j] > list[j + 1]) {
            //             int tmp = list[j + 1];
            //             list[j + 1] = list[j];
            //             list[j] = tmp;
            //         }
            //     }
            // }
            for (int i = list.Count; i >= 1; i--) {
                for (int j = 0; j < i - 1 - i; j++) {
                    if (list[j] > list[j + 1]) {
                        int tmp = list[j + 1];
                        list[j + 1] = list[j];
                        list[j] = tmp;
                    }
                }
            }
            System.Console.WriteLine ();
            ShowListItrms (list);
        }

        static void ShowListItrms (IList<int> list) {
            foreach (var item in list) {
                System.Console.Write ($"{item},");
            }
        }
    }
}
  • 选择排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Say {
    class Program {
        static void Main (string[] args) {
            List<int> intlist = new List<int> ();
            intlist.Add (90);
            intlist.Add (50);
            intlist.Add (30);
            intlist.Add (15);
            ShowListItrms (intlist);
            InsertionSort (intlist);
        }

        //插入排序
        static void InsertionSort (IList<int> list) {
            int j, temp;
            for (int i = 0; i < list.Count; i++) {
                temp = list[i];
                j = i;
                while (j > 0 && list[j - 1] > temp) {
                    list[j] = list[j - 1];
                    j--;
                }
                list[j] = temp;
            }
            ShowListItrms (list);
        }
        static void ShowListItrms (IList<int> list) {
            foreach (var item in list) {
                System.Console.Write ($"{item},");
            }
            System.Console.WriteLine ();
        }
    }
}
  • 插入排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Say {
    class Program {
        static void Main (string[] args) {
            List<int> intlist = new List<int> ();
            intlist.Add (90);
            intlist.Add (50);
            intlist.Add (30);
            intlist.Add (15);
            ShowListItrms (intlist);
            InsertionSort (intlist);
        }

        //插入排序
        static void InsertionSort (IList<int> list) {
            int j, temp;
            for (int i = 0; i < list.Count; i++) {
                temp = list[i];
                j = i;
                while (j > 0 && list[j - 1] > temp) {
                    list[j] = list[j - 1];
                    j--;
                }
                list[j] = temp;
            }
            ShowListItrms (list);
        }
        static void ShowListItrms (IList<int> list) {
            foreach (var item in list) {
                System.Console.Write ($"{item},");
            }
            System.Console.WriteLine ();
        }
    }
}
  • 学生成绩
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IComparable接口_与_IComparer接口 {
    class Program {
        static void Main (string[] args) {
            List<Student> intlist = new List<Student> { //string 类型需要注意,如果string是动态赋值的,动态赋值的时候不会自拘留池中存在如果是在常量池当中没问题
                new Student { Name = "张三", Ianguage = 80, Mathematics = 90, English = 100 },
                new Student { Name = "李四", Ianguage = 90, Mathematics = 89, English = 88 },
                new Student { Name = "王五", Ianguage = 95, Mathematics = 67, English = 66 },
                new Student { Name = "张二", Ianguage = 60, Mathematics = 99, English = 77 },
                new Student { Name = "李三", Ianguage = 75, Mathematics = 100, English = 68 },
                new Student { Name = "王四", Ianguage = 96, Mathematics = 91, English = 99 },
                new Student { Name = "张一", Ianguage = 66, Mathematics = 76, English = 66 },

            };
            // intlist.Sort ();
            // intlist.Sort (new Fruit());

            Student[] tmps = new Student[] {
                new Student { Name = "李二", Ianguage = 90, Mathematics = 80, English = 90 },
                new Student { Name = "王三", Ianguage = 70, Mathematics = 90, English = 90 },
                new Student { Name = "刘二", Ianguage = 80, Mathematics = 90, English = 50 },
            };
            var p = new Student () { Name = "李七", Ianguage = 30, Mathematics = 99, English = 100 };

            intlist.AddRange (tmps); //只要实现了IEnumerable接口的集合,就可以同时添加多个
            intlist.Sort ();
            // intlist.Insert (1, new Fruit () { Name = "橘子", Price = 6 }); //从指定位置插入元素
            intlist.Insert (1, p);
            intlist.RemoveAt (1); //RemoveAt系列删除相关的各种操作

            System.Console.WriteLine (intlist.Contains (p)); //判断是否存在
            // intlist.Clear (); //清空所有
            displayListItems (intlist);

        }

        static void displayListItems (IList<Student> list) {
            foreach (var item in list) {
                System.Console.WriteLine (item);
            }
        }
    }

    class Student : IComparable<Student>, IComparer<Student> {
        public string Name { get; set; }
        public int Ianguage { get; set; }

        public int Mathematics { get; set; }

        public int English { get; set; }

        public int Average { get { return (Ianguage + Mathematics + English) / 3; } }

        public int Compare (Student x, Student y) {
            return x.Average - y.Average; //调换位置从大到小
        }

        public int CompareTo (Student obj) {
            if (obj == null) return 1;
            // if (this.Price == obj.Price) return 0;
            // if (this.Price < obj.Price) return -1;
            // return 1;//从大到小
            return this.Average - obj.Average; //从大到小,兑换位置从小到大
            // return Price.CompareTo (obj.Price);//从小到大
        }

        public override string ToString () {
            return $"{this.Name }:{this.Ianguage}分,{this.Mathematics}分,{this.English}分,平均分为{this.Average}";
        }
    }

}
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2019-5-4 14:35:00 | 显示全部楼层   江苏省南京市
1、实现下列集合的冒泡排序 选择排序 与 插入排序
static void Main(string[] args){
        List list = new List { 33, 22, 1, 7, 66, 48, 95, 93, 92, 91, 46 };
        BubbleSort(list);
        SelectionSort(list);
        InsertionSort(list);
        Console.Read();
}
static void ShowListItems(IList list){
        foreach (var item in list){
                Console.Write($"{item},");
        }
}
//冒泡排序升序
static void BubbleSort(IList list) {
        for (int i = 0; i < list.Count; i++){
                for (int  y= 0;  y < list.Count-i-1; y++){
                        if (list[y] > list[y + 1]) {
                        int tmp = list[y + 1];
                        list[y + 1] = list[y];
                        list[y] = tmp;
                            }
                }
        }
        Console.WriteLine();
        Console.Write("冒泡排序升序结果为:");
        ShowListItems(list);
}
//选择排序升序
static void SelectionSort(IList list){
        int min,temp;
        for (int i =0; i < list.Count;i++){
                min = i;
                for (int y = i+1; y < list.Count; y++)
                        if (list[min] > list[y]) min = y;                 
                temp = list<i>;
                list<i> = list[min];
                list[min] = temp;
        }
        Console.WriteLine();
        Console.Write("选择排序升序结果为:");
        ShowListItems(list);
}
//插入排序升序
static void InsertionSort(IList list){
        int j, temp;
        for (int i = 0; i < list.Count; i++){
                temp = list<i>;
                j = i;
                while (j > 0 && list[j - 1] > temp){
                    list[j] = list[j - 1];
                    j--;
                }
                list[j] = temp;
        }
        Console.WriteLine();
        Console.Write("插入排序升序结果为:");
        ShowListItems(list);
}

2、设计一个Student类 每个学生 都有 语文 数学 英语 成绩,请实现学生平均成绩升序排序(注:请使用IComparable接口实现)
static void Main (string[] args){
        List list = new List{
                new Student { Name = "张三",Chinese=98,Math=100,English=100 },
                new Student { Name = "李四",Chinese=95,Math=99,English=97 },
                new Student { Name = "王五",Chinese=90,Math=97,English=96 },
                new Student { Name = "赵六",Chinese=92,Math=99,English=97 },
        };
        list.Sort ();
       
        Console.WriteLine ();
        DisplayListItems (list);
        Console.Read ();
}

static void DisplayListItems (IList list){
        foreach (var item in list) Console.WriteLine (item);
}

class Student : IComparable{
        public string Name { get; set; }
        public int Chinese { get; set; }
        public int Math { get; set; }
        public int English { get; set; }
        public int Avg {get { return (Chinese + Math + English) / 3; }}

        public int CompareTo (Student obj){
                if (obj == null) return 1;
                return this.Avg - obj.Avg;
        }
        public override string ToString (){
                return $"{this.Name}成绩如下:语文--{this.Chinese},数学--{this.Math},英                        语--{this.English},平均分--{this.Avg}。";
        }
}

评分

参与人数 1好评 +1 精币 +2 收起 理由
老郭 + 1 + 2 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2019-4-19 00:28:49 | 显示全部楼层   江苏省扬州市
本帖最后由 qingshanlushui 于 2019-4-19 00:31 编辑

额。。发重了。。
回复 支持 反对

使用道具 举报

发表于 2019-4-19 00:27:40 | 显示全部楼层   江苏省扬州市
1、实现下列集合的冒泡排序 选择排序 与 插入排序

List<int> list = new List<int>{33,22,1,7,66,48,95,93,92,91,46};
  
static void Main (string[] args)
{
List list = new List { 33, 22, 1, 7, 66, 48, 95, 93, 92, 91, 46 };
BubbleSort (list);
SelectionSort (list);
InsertionSort (list);
Console.Read ();
}
static void ShowListItems (IList list)
{
foreach (var item in list)
{
Console.Write ($"{item},");
}
}
//冒泡排序升序
static void BubbleSort (IList list) {
for (int i = list.Count; i >=1; i--)
{
for (int  y= 0;  y < i-1; y++)
{
if (list[y] > list[y + 1]) {
int tmp = list[y + 1];
list[y + 1] = list[y];
list[y] = tmp;
}
}
}
Console.WriteLine ();
Console.Write ("冒泡排序升序结果为:");
ShowListItems (list);
}
//选择排序升序
static void SelectionSort (IList list){
int min,temp;
for (int i =0; i < list.Count;i++){
min = i;
for (int y = i+1; y < list.Count; y++)
{
if (list[min] > list[y]) min = y;  
}
temp = list[i];
list[i] = list[min];
list[min] = temp;
}
Console.WriteLine ();
Console.Write ("选择排序升序结果为:");
ShowListItems (list);
}
//插入排序升序
static void InsertionSort (IList list){
int j, temp;
for (int i = 0; i < list.Count; i++){
temp = list[i];
j = i;
while (j > 0 && list[j - 1] > temp){
list[j] = list[j - 1];
j--;
}
list[j] = temp;
}
Console.WriteLine ();
Console.Write ("插入排序升序结果为:");
ShowListItems (list);
}
}



2、设计一个Student类 每个学生 都有 语文 数学 英语 成绩,请实现学生平均成绩升序排序

(注:请使用IComparable接口实现)

  
static void Main (string[] args)
{
List list = new List{
new Student { Name = "小明",Chinese=64,Math=64,English=80 },
new Student { Name = "小红",Chinese=77,Math=85,English=75 },
new Student { Name = "小胖",Chinese=86,Math=40,English=93 },
new Student { Name = "小刚",Chinese=55,Math=83,English=78 },
};
list.Sort ();
Console.WriteLine ("-------------成绩表------------");
Console.WriteLine ();
DisplayListItems (list);
Console.Read ();
}
static void DisplayListItems (IList list)
{
foreach (var item in list)
{
Console.WriteLine (item);
}
}
class Student : IComparable{
public string Name { get; set; }
public int Chinese { get; set; }
public int Math { get; set; }
public int English { get; set; }
public int Avg {
get { return (Chinese + Math + English) / 3; }
}

public int CompareTo (Student obj)
{
if (obj == null) return 1;
return this.Avg - obj.Avg;
}
public override string ToString (){
return $"{this.Name}成绩如下:语文--{this.Chinese},数学--{this.Math},英语--{this.English},平均分--{this.Avg}。";
}
}


评分

参与人数 1好评 +1 精币 +2 收起 理由
老郭 + 1 + 2 很赞同,谢谢!

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表