Discuss / Java / 用标志法优化冒泡排序程序

用标志法优化冒泡排序程序

Topic source

int size = ns.length;

        int temp; boolean flag = false; //标志flag用来记录某一趟遍历中是否存在逆序

        for(int i = 0; i < size; ++i)

        {

            if(flag) break; //flag为true时,上次遍历数组已经没有逆序,直接退出

            flag = true;

            for(int j = 0; j < size - i - 1; ++j) //保证i=0时ns[j]与ns[j+1]比较不越界,i=size-1时,直接退出

            {

                if(ns[j] < ns[j + 1]) //找到逆序,交换相邻元素,置flag为false

                {

                    flag = false; temp = ns[j + 1]; ns[j + 1] = ns[j]; ns[j] = temp;

                }

            }

        }


  • 1

Reply