数据结构-排序

本文详细介绍了几种常见的排序算法,包括选择排序、冒泡排序、希尔排序和插入排序,并提供了每种算法的具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构基本知识
http://student.zjzk.cn/course_ware/data_structure/web/main.htm
排序实现:
     // 选择排序算法
     public   class  SelectionSorter
    
{
        
private int min;
        
public void Sort(int[] list)
        
{
            
for (int i = 0; i < list.Length - 1; i++)
            
{
                min 
= i;
                
for (int j = i + 1; j < list.Length; j++)
                
{
                    
if (list[j] < list[min])
                        min 
= j;
                }

                
int t = list[min];
                list[min] 
= list[i];
                list[i] 
= t;
            }


        }

    }
     public   class  BubbleSorter
    
{
        
//冒泡排序算法
        public void Sort(int[] list)
        
{
            
int i, j, temp;
            
bool done = false;
            j 
= 1;
            
while ((j < list.Length) && (!done))
            
{
                done 
= true;
                
for (i = 0; i < list.Length - j; i++)
                
{
                    
if (list[i] > list[i + 1])
                    
{
                        done 
= false;
                        temp 
= list[i];
                        list[i] 
= list[i + 1];
                        list[i 
+ 1= temp;
                    }

                }

                j
++;
            }


        }

    }
     // 希尔排序  
     public   class  ShellSorter
    
{
        
public void Sort(int[] list)
        
{
            
int inc;
            
for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
            
for (; inc > 0; inc /= 3)
            
{
                
for (int i = inc + 1; i <= list.Length; i += inc)
                
{
                    
int t = list[i - 1];
                    
int j = i;
                    
while ((j > inc) && (list[j - inc - 1> t))
                    
{
                        list[j 
- 1= list[j - inc - 1];
                        j 
-= inc;
                    }

                    list[j 
- 1= t;
                }

            }

        }

    }
     // 插入排序
     public   class  InsertionSorter
    
{
        
public void Sort(int[] list)
        
{
            
for (int i = 1; i < list.Length; i++)
            
{
                
int t = list[i];
                
int j = i;
                
while ((j > 0&& (list[j - 1> t))
                
{
                    list[j] 
= list[j - 1];
                    
--j;
                }

                list[j] 
= t;
            }

        }

    }
     public   class  MainClass
    
{
        
//测试
        public static void Main()
        
{
            
int[] iArrary = new int[] 151361055992871234753347 };

            
//BubbleSorter sh = new BubbleSorter();
            
//sh.Sort(iArrary);

            
//ShellSorter sh = new ShellSorter();
            
//sh.Sort(iArrary);

            InsertionSorter sh 
= new InsertionSorter();
            sh.Sort(iArrary);

            
//SelectionSorter sh = new SelectionSorter();
            
//sh.Sort(iArrary);

            
for (int m = 0; m < iArrary.Length; m++)
            Console.Write(
"{0} ", iArrary[m]);
            Console.WriteLine();
        }

    }
后记:
冒泡是不断的把小的数向前移
选择是每次取最小的,然后向已经排好的部分最后添加
插入是把下一个数插入到已经排好的序列中的合适位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值