`

利用冒泡排序法实现select option按中文排序组件

阅读更多
/*
*给当前的select元素排序,
*@ param selectObj:当前的select元素
*@ param sortType:排序类型 desc:降序 asc:升序
*/
function sort(selectObj,sortType){   
    var optionsObj=selectObj.options;
    var optionsLength=optionsObj.length;
    var exchang;
    var tempValue1;
    var tempValue2;
    if(StringUtils.isBlank(sortType)){
    	sortType="desc";
    	}
    if(sortType=="desc"){
    	// 降序
	 		 for (i = 0; i < optionsLength; i++) //最多做R.Length-1趟排序 
            {
               exchange = false; //本趟排序开始前,交换标志应为假
                for (j =optionsLength-2; j >= i; j--)
                {  
                   tempValue1=optionsObj[j + 1].text;
                   tempValue2=optionsObj[j].text              
                    if (tempValue1.localeCompare(tempValue2)>0) //<0说明tempValue1大于tempValue2
                    {    //  alert("降交换==="+tempValue1+"--------"+tempValue2);
                       	   optionsObj[j].swapNode(optionsObj[j+1]);
                       	   exchange = true; //发生了交换,故将交换标志置为真      
                    }
                  }
	                if (exchange==false) //本趟排序未发生交换,提前终止算法 
	                {
	                    break;
	                }
            }
        }else{
        	//升序
        	for (i = 0; i < optionsLength; i++) //最多做R.Length-1趟排序 
            {
               exchange = false; //本趟排序开始前,交换标志应为假
                for (j =optionsLength-2; j >= i; j--)
                {  
                   tempValue1=optionsObj[j + 1].text;
                   tempValue2=optionsObj[j].text              
                    if (tempValue1.localeCompare(tempValue2)<0) //<0说明tempValue1小于tempValue2
                    {     // alert("升交换==="+tempValue1+"--------"+tempValue2);
                       	   optionsObj[j].swapNode(optionsObj[j+1]);
                       	   exchange = true; //发生了交换,故将交换标志置为真      
                    }
                  }
	                if (exchange==false) //本趟排序未发生交换,提前终止算法 
	                {
	                    break;
	                }
            }
        	
        	
        	
        	}  
  }  

 

主要的知识点:localeCompare :实现按照中文音序排序

                   swapNode在option对象上的使用

分享到:
评论

相关推荐

    javascipt无限级可排序下拉框的实现

    这通常涉及到复杂的数据操作,包括对JSON对象数组的排序算法,如冒泡排序、快速排序等。排序后,需要重新渲染下拉框,确保其内容与排序后的数据一致。 在实际应用中,可能还需要考虑性能优化,因为无限级的数据可能...

    网络请求和数组排列以及下拉选择

    常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。这些算法各有优缺点,适用于不同的场景。例如,冒泡排序简单但效率较低,适合小规模数据;快速排序平均性能优异,但在最坏情况下效率降低。在...

    2021-2022计算机二级等级考试试题及答案No.14627.docx

    根据给定文件的信息,我们可以总结出一系列与...- **详细解析**:冒泡排序、选择排序等简单排序算法在最坏情况下需要进行较多的比较。例如,冒泡排序的最坏情况比较次数为n(n-1)/2。因此,正确答案为A(冒泡排序)。

    2021-2022计算机二级等级考试试题及答案No.9929.docx

    15. **排序算法** - 最坏情况下比较次数最少的排序算法是堆排序,其时间复杂度为O(n log n),而冒泡排序、简单选择排序和直接插入排序在最坏情况下都是O(n^2)。 16. **Python简易计算器** - 一个简单的Python计算器...

    九年三月计算机考试二级VB真题及答案二.pdf

    2. **排序算法**:在给定的题目中提到了几种排序方法,冒泡排序、简单选择排序、直接插入排序和堆排序。其中,堆排序在最坏情况下的比较次数最少。 3. **二叉树性质**:一棵二叉树如果有5个度为2的节点,根据二叉树...

    2021-2022计算机二级等级考试试题及答案No.9557.docx

    - **冒泡排序**:一种简单的排序算法,通过重复遍历要排序的列表,比较每对相邻项并交换顺序不正确的项。 ### JavaScript嵌入HTML - **位置**:在HTML文档中,JavaScript代码通常放在`&lt;script&gt;`标签内,可以在`...

    2021-2022计算机二级等级考试试题及答案No.1414.docx

    4. 排序算法比较次数:在给出的排序方法中,冒泡排序、简单选择排序和直接插入排序在最坏情况下比较次数较多,而堆排序在最坏情况下比较次数较少,因此选项D是正确的。 5. 计算机主频与运行速度:主频是CPU的时钟...

    php面试题

    - 实现一个简单的冒泡排序或选择排序。 8. **提高页面加载速度** - 使用缓存、减少HTTP请求、压缩资源文件、图片懒加载等。 #### 数据库设计题 - 设计一套图书馆借书管理系统数据库表结构: - **用户表**(`...

    2021-2022计算机二级等级考试试题及答案No.1111.docx

    - **冒泡排序:** 最坏情况下的时间复杂度为O(n^2),其中n表示数组的长度。 - **快速排序:** 最坏情况下的时间复杂度也为O(n^2),但在实际应用中平均性能较好。 **题目解析:** 快速排序最坏情况下的比较次数为n(n...

    Java学习笔记-个人整理的

    {1.11.2.2}冒泡排序}{39}{subsubsection.1.11.2.2} {1.11.2.3}插入排序}{40}{subsubsection.1.11.2.3} {1.11.3}递归调用}{41}{subsection.1.11.3} {1.12}Java API}{41}{section.1.12} {1.13}Linux命令}{41}{...

Global site tag (gtag.js) - Google Analytics